Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中插入向量_C++ - Fatal编程技术网

在C++中插入向量

在C++中插入向量,c++,C++,我想在向量的开头插入位集中的一位。我很难理解如何做到这一点。以下是我认为我可以做到的: keyRej.insert(x, inpSeq[0]); 我不知道用什么来代替x 我不知道用什么来代替x 要插入的位置的迭代器: keyRej.insert(keyRej.begin(), inpSeq[0]); 从语义上讲,插入的元素位于作为第一个参数传递的迭代器之前。但这将导致向量的所有元素必须跨一个位置移动,并且还可能导致向量的内部数据存储块的重新分配。这也意味着对向量元素的所有迭代器或引用都是无效

我想在向量的开头插入位集中的一位。我很难理解如何做到这一点。以下是我认为我可以做到的:

keyRej.insert(x, inpSeq[0]);
我不知道用什么来代替x

我不知道用什么来代替x

要插入的位置的迭代器:

keyRej.insert(keyRej.begin(), inpSeq[0]);
从语义上讲,插入的元素位于作为第一个参数传递的迭代器之前。但这将导致向量的所有元素必须跨一个位置移动,并且还可能导致向量的内部数据存储块的重新分配。这也意味着对向量元素的所有迭代器或引用都是无效的

有关更多信息,请参阅此参考

请注意,有些容器,例如,将元素附加到前端是很便宜的,并且保持了引用而不是迭代器的有效性

我不知道用什么来代替x

要插入的位置的迭代器:

keyRej.insert(keyRej.begin(), inpSeq[0]);
从语义上讲,插入的元素位于作为第一个参数传递的迭代器之前。但这将导致向量的所有元素必须跨一个位置移动,并且还可能导致向量的内部数据存储块的重新分配。这也意味着对向量元素的所有迭代器或引用都是无效的

有关更多信息,请参阅此参考


请注意,有些容器,例如,将元素附加到前端是很便宜的,并且保持了引用而不是迭代器的有效性

x是迭代器根据您可能阅读的文档,新对象就在它前面插入

keyRej.insert(keyRej.begin(), inpSeq[0]);

根据您可能阅读的文档,x是一个迭代器,新对象就在它前面插入

keyRej.insert(keyRej.begin(), inpSeq[0]);

如果开始时插入是常见的,并且您可以控制类型,则可以考虑用STD::DEQUE替换您的STD::vector:如果开始时插入是常见的,并且可以控制类型,则可以考虑用STD::DEXQUE替换STD::vector:相关:我不知道什么。我想把inpSeq的第一个位放在向量下,然后在循环下使用push_将其他位放在该inpSeq位之后。@Mohamedhamed你的问题没有提到循环或将元素推到向量后面。我已经回答了你的问题。如果必须经常做这个手术,如果总是在向量的同一侧执行追加/擦除操作,则最好将代码更改为在末尾追加,或者移动到两端插入时具有更好性能特征的数据结构(如deque)。我不确定是什么。begin可以,我想,但向量中inpSeq的第一位,然后在循环下使用push_back将其他位放在inpSeq位之后。@MohamedAhmed您的问题没有提到循环或将元素推到向量的后面。我已经回答了您提出的问题。如果必须经常执行此操作,则最好将代码更改为在向量的同一侧执行追加/擦除操作时在末尾追加,或者移动到两端插入时具有更好性能特征的数据结构(如deque)。