当前位置:  开发笔记 > 编程语言 > 正文

std:vector中的断言错误用于std :: set_difference

如何解决《std:vector中的断言错误用于std::set_difference》经验,为你挑选了1个好方法。

我试图找到两个向量的集合差异,所以我做这样的事情:

std::vector first_vec, second_vec, difference_vec;

// populate first_vec and second_vec ...

std::sort(first_vec.begin(),first_vec.end());
std::sort(second_vec.begin(),second_vec.end());

std::set_difference(first_vec.begin(),first_vec.end(),
            second_vec.begin(),second_vec.end(),
            difference_vec.begin());

当我在调试中运行它时,我得到以下运行时断言失败(在'vector'中):

_SCL_SECURE_VALIDATE_RANGE(_Myptr < ((_Myvec *)(this->_Getmycont()))->_Mylast);

我正在使用VS 2008.关于什么可以触发这个的任何想法?



1> 小智..:

与大多数c ++算法一样,set_difference不会在输出向量中创建之前不存在的新条目.您需要在输出中创建空间以保存结果.

编辑:或使用插入迭代器(未经测试):

 back_insert_iterator< std::vector > bi( difference_vec ); 

std::set_difference(first_vec.begin(),first_vec.end(),
            second_vec.begin(),second_vec.end(),
            bi);

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有