在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)。