Sequence Containers
vector
使用动态数组实现
初始化
初始化方法有:
1 | vector<dataType> name({ value1, value2, value3 ....}); // 逐个指定元素 |
如果要初始化二维的 vector,可以:
- 使用默认构造函数和嵌套的
std::vector创建一个空的二维std::vector,然后使用嵌套的push_back()方法逐行添加元素。
1 | std::vector<std::vector<int>> myVector; // 创建一个空的二维 vector |
- 使用初始化列表和嵌套的初始化列表初始化二维
std::vector。
1 | std::vector<std::vector<int>> myVector = { |
- 使用构造函数和嵌套的
std::vector,并指定行数和列数。
1 | std::vector<std::vector<int>> myVector(3, std::vector<int>(3, 0)); |
方法
.begin()返回 vector 中第一个元素的 iterator.end()返回 vector 中最后一个元素后面的 iterator.front(),.back()分别返回第一个和最后一个元素的值.size()返回 vector 大小.max_size()返回目前最多能装多少元素.empty()是否为空.reserve(n)将动态数组的大小扩充至.resize(n)将当前.size()变成 ,会填充或删除某些元素.at(i)返回第 个位置的值push_back(value)将value塞至最后emplace_back(value)在某些情况下同上。理想情况能省空间。insert()有多种用法- 插入单个元素
insert(position, value),例如
1
vector_name.insert(vector_name.begin() + 3, 100);
- 或者插入一个范围的元素
insert (const_iterator position, InputIterator first, InputIterator last),例如
1
2
3std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
vec1.insert(vec1.end(), vec2.begin(), vec2.end());- 插入单个元素
erase()分两种情况同样1
2vector_name.erase(position); // for deletion at specific position
vector_name.erase(starting_position, ending_position); // for deletion in rangeposition也要是iterator。删除一个范围时,starting_position位置的元素被删除,ending_position位置不被删除.clear()删除所有元素.find()
时间复杂度
- 访问:
- 修改最后一个元素:平均为
- 修改任意元素:
- 调整大小:
array
就是一个固定大小的数组。
初始化
在构建的时候指定大小
1 | array<int, 5> myArray; |
方法
.at(i),.get(i)返回第 个位置的值.front(),back()分别返回第一个和最后一个元素的值.size(),.max_size()返回的都是数组大小(因为是固定的).fill()将整个数组赋予某个值.empty()是否为空
评论
