如何将元素插入矢量的开头
How can I insert element into beginning of vector?
>我需要将值插入std::vector
并且我需要将此向量中的其他值推送到更远的位置,例如:向量开头添加的内容以及值从位置 1 移动到 2,从 2 移动到 3 等。
我该怎么做?
使用 std::vector::insert 函数,接受第一个元素的迭代器作为目标位置(在其之前插入元素的迭代器(:
#include <vector>
int main() {
std::vector<int> v{ 1, 2, 3, 4, 5 };
v.insert(v.begin(), 6);
}
或者,追加元素并向右执行旋转:
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v{ 1, 2, 3, 4, 5 };
v.push_back(6);
std::rotate(v.rbegin(), v.rbegin() + 1, v.rend());
}
您应该考虑使用 std::deque
.它的工作方式很像std::vector
但您可以从前端和结尾添加和删除项目。
它通过将内部存储划分为较小的块来实现这一点。您仍然拥有具有良好查找速度的随机访问迭代器。
如果您的容器很小,使用std::vector
方法应该没问题,但是如果您要存储大量数据,则在前面插入/删除std::deque
的性能将要优越得多。
这个呢?
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
std::vector<int> v1 = { 1, 2, 3 };
std::vector<int> v2 = { 4, 5, 6 };
// merge
std::vector<int> dst;
std::merge(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(dst));
}
最后 dst 是: {1, 2, 3, 4, 5, 6}
注意:这是一个示例,因此您应该检查v1是否为空等。
你可以
试试这个
vector<int> v={1,2,3,4,5};
for(int i=0;i<5;i++){
v.insert(v.begin(),i+1);
}
输出为 {5,4,3,2,1,1,2,3,4,5}
插入后,每个元素都向右移动
您可以从后面插入值到std::vector
,然后使用std::reverse
:
例:
#include <vector>
#include <algorhitm>
#include <iostream>
void printVector( std::vector< int > const & _vector )
{
for( auto value : _vector )
{
std::cout << value << " ";
}
std::cout << std::endl;
}
int main()
{
std::vector< int > someVec;
someVec.push_back( 5 );
someVec.push_back( 4 );
someVec.push_back( 3 );
someVec.push_back( 2 );
someVec.push_back( 1 );
// (1)
printVector( someVec );
std::reverse( someVec.begin(), someVec.end() );
// (2)
printVector( someVec );
return 0;
}
输出 (1(:
5 4 3 2 1
输出 (2(:
1 2 3 4 5
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 如何在C++中.txt文件的开头插入字符串
- C++ 在字符的开头插入字符
- 使用代码块在链表的开头插入节点
- 为什么 C++ 中的分号在插入代码开头时不显示任何错误?
- 如何在单向链表的开头插入
- C++中的数据结构,插入链表中节点的开头
- 如何将元素插入矢量的开头
- 将节点插入链表只会转到开头或结尾
- 无法在 c++ 链表的开头插入
- 在 std::forward_list 的开头插入元素
- 如何在结果列表的开头插入生成的列表
- 在linkedList C++的开头插入
- 在另一个字符*C++的开头插入一个字符*
- 在 protobuf 列表的开头插入项目
- 在链表的开头插入时读取内存时出错
- 如何在矢量的开头插入元素
- 关于在链表开头插入节点(程序未正确执行)
- 如何将字符串插入到字符串流的开头