测试两个向量是否相同
请参见下面的代码
#include <iostream>
#include <vector>
#include <string>
int main(void) {
std::vector<std::string> vstr1(131, "asdf");
std::vector<std::string> vstr2(33131, "asdf");
std::cout << (vstr1 == vstr2) << std::endl;;
std::cout << "******************************" << std::endl;
return 0;
}
效果很好。
现在我将vstr2的大小更改为非常大的[[large,例如33333333333131
#include <iostream>
#include <vector>
#include <string>
int main(void) {
std::vector<std::string> vstr1(131, "asdf");
std::vector<std::string> vstr2(33333333333131, "asdf");
std::cout << (vstr1 == vstr2) << std::endl;;
std::cout << "******************************" << std::endl;
return 0;
}
不起作用,并且错误消息是
terminate called after throwing an instance of 'std::bad_alloc' what() std::bad_alloc Aborted (core dumped) a.out
我已经收集到由于内存分配失败而导致的错误。我该如何处理非常大的向量?