0

是否可以以非连续方式在 std::vector 中插入值,例如,

std::vector<int> Myvector;
//Myvector[0] = 123;
//Myvecotr[2] = 456;
//Myvector[5] = 789;
4

3 回答 3

6

有点。您不能真正以这种方式插入,但您可以设置大小,并且只为您关心的人设置值。

如果您真的希望它稀疏(例如,在您的示例中 Myvector[1], [3], [4] 根本不存在),那么不。对于类似的事情,您可以使用 anstd::map<int, int>而不是向量。

于 2012-07-16T06:03:22.627 回答
1

当您的代码对尚不存在的元素使用索引时。或者换句话说,如果您的索引超过 (>=) 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
于 2012-07-16T06:56:59.243 回答
0

如果你可以在开始时设置大小,那么你可以做这样的事情

vector<int> iVec(5);
iVec[0] = 0;
iVec[2] = 2;
iVec[4] = 4;
于 2012-07-16T06:07:09.837 回答