将元素替换为向量的特定位置

新手上路,请多包涵

我想将一个元素替换为向量的特定位置,我可以只使用一个赋值:

 // vec1 and 2 have the same length & filled in somehow
vec1;
vec2;

vec1[i] = vec2[i] // insert vec2[i] at position i of vec1

或者我必须使用插入():

 vector<sometype>::iterator iterator = vec1.begin();

vec1.insert(iterator+(i+1), vec2[i]);

原文由 daiyue 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 740
2 个回答
vec1[i] = vec2[i]

将 --- 的值设置为 vec1[i] vec2[i] 值。什么都没有插入。您的第二种方法几乎是正确的。而不是 +i+1 你只需要 +i

 v1.insert(v1.begin()+i, v2[i])

原文由 Armen Tsirunyan 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 at 来做到这一点。您可以尝试以下简单示例:

 const size_t N = 20;
std::vector<int> vec(N);
try {
    vec.at(N - 1) = 7;
} catch (std::out_of_range ex) {
    std::cout << ex.what() << std::endl;
}
assert(vec.at(N - 1) == 7);

请注意,方法 at 返回一个 allocator_type::reference ,在这种情况下是一个 int& 。使用 at 相当于分配值 vec[i]=...


atinsert 是有区别的,下面的例子可以理解:

 const size_t N = 8;
std::vector<int> vec(N);
for (size_t i = 0; i<5; i++){
    vec[i] = i + 1;
}

vec.insert(vec.begin()+2, 10);

如果我们现在打印出 vec 我们将得到:

 1 2 10 3 4 5 0 0 0

相反,如果我们做了 vec.at(2) = 10vec[2]=10 ,我们会得到

1 2 10 4 5 0 0 0

原文由 Pantelis Sopasakis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题