是否可以以非连续的方式在std :: vector中插入值,如
std::vector<int> Myvector;
//Myvector[0] = 123;
//Myvecotr[2] = 456;
//Myvector[5] = 789;
答案 0 :(得分:6)
排序。你无法以这种方式插入,但你可以设置大小,只为你关心的人设置值。
如果你真的希望它稀疏(例如,在你的例子中Myvector [1],[3],[4]根本不存在),那么没有。对于类似的东西,你可以使用std::map<int, int>
而不是矢量。
答案 1 :(得分:1)
当您的代码使用尚不存在的元素的索引时。或者换句话说,如果您的索引超过(&gt; =)vector::size()
,那么您正在访问不存在的元素。唉,你最终会陷入未定义的行为。
std::vector<int> Myvector;
Myvector[0] = 123; // boom Myvector[0] was never created
所以你需要添加这些元素
// the boring way
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector[0] = 123; // set element 0 to 123
Myvector[2] = 456; // set element 2 to 456
或者如其他答案中所述,您设置尺寸(我更喜欢):
Myvector.resize(5);
或者从开头开始说明尺寸:
std::vector<int> Myvector(5); // 5 elements, all with the value of the default c'tor
答案 2 :(得分:0)
如果您可以在开头设置尺寸,那么您可以执行类似这样的操作
vector<int> iVec(5);
iVec[0] = 0;
iVec[2] = 2;
iVec[4] = 4;