yoa*_*ram 0 c++ stl visual-studio-2008
我试图找到两个向量的集合差异,所以我做这样的事情:
std::vector<sha1_hash> 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());
Run Code Online (Sandbox Code Playgroud)
当我在调试中运行它时,我得到以下运行时断言失败(在'vector'中):
_SCL_SECURE_VALIDATE_RANGE(_Myptr < ((_Myvec *)(this->_Getmycont()))->_Mylast);
Run Code Online (Sandbox Code Playgroud)
我正在使用VS 2008.关于什么可以触发这个的任何想法?
小智 7
与大多数c ++算法一样,set_difference不会在输出向量中创建之前不存在的新条目.您需要在输出中创建空间以保存结果.
编辑:或使用插入迭代器(未经测试):
back_insert_iterator< std::vector<sha1_hash> > bi( difference_vec );
std::set_difference(first_vec.begin(),first_vec.end(),
second_vec.begin(),second_vec.end(),
bi);
Run Code Online (Sandbox Code Playgroud)