我创建了两个向量,并用push_back填充另一个向量,用索引填充另一个向量。我希望这些是相等的,但事实并非如此。有人可以解释一下这是为什么吗?
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v0;
v0.push_back(0);
v0.push_back(1);
v0.push_back(2);
vector<int> v1;
v1.reserve(3);
v1[0] = 0;
v1[1] = 1;
v1[2] = 2;
if (v0 != v1) {
cout << "why aren't they equal?" << endl;
}
return 0;
}
vector<int> v1;
v1.reserve(3);
v1[0] = 0;
v1[1] = 1;
v1[2] = 2;
这可能是一个未定义的行为(尽管不确定它是否依赖于实现)。
你不能使用operator[]
用于填充向量,因为它返回对底层对象的引用,在您的情况下,该对象只不过是一堆位。
你应该使用push_back()
要不就resize
你的向量。使用后者:-
vector<int> v1;
v1.resize(3);
v1[0] = 0;
v1[1] = 1;
v1[2] = 2;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)