gpt4 book ai didi

c++ - std::set_difference 中使用的 std:vector 中的断言错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:29:00 26 4
gpt4 key购买 nike

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

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());

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

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

我正在使用 VS 2008。关于什么可以触发此问题的任何想法?

最佳答案

与大多数 C++ 算法一样,set_difference 不会在之前不存在的输出 vector 中创建新条目。您需要在输出中创建空间来保存结果。

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

 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);

关于c++ - std::set_difference 中使用的 std:vector 中的断言错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com