vector 简介
-
动态扩展: std::vector 可以在运行时改变大小。 -
随机访问: 通过下标(O(1) 时间复杂度)快速访问任何元素。 -
连续存储: 元素在内存中连续存储,这对缓存友好,并可使用指针或迭代器范围访问。
-
push_back(): 在末尾添加元素。 -
pop_back(): 删除末尾元素。 -
size(): 返回元素个数。 -
capacity(): 返回不增加内存分配即可存储的元素总数。 -
resize(): 改变元素个数。 -
clear(): 移除所有元素。 -
empty(): 检查容器是否为空。
实例说明
-
若要使用vector,需要先导入vector头文件 -
然后可以定义一个vector并往末尾push和pop值:
// 初始化vector
std::vector<int> v;
// push_back(), 在末尾添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.pop_back();
-
然后就可以使用迭代器来遍历vector
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
-
下面给出一个完整的示例代码:
int main() {
// 初始化vector
std::vector<int> v;
// push_back(): 在末尾添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// pop_back(): 删除末尾元素
v.pop_back();
// size(): 返回元素个数
std::cout << "Size: " << v.size() << std::endl;
// capacity(): 返回容量
std::cout << "Capacity: " << v.capacity() << std::endl;
// resize(): 改变元素个数
v.resize(5); // 如果新大小大于原大小,会添加使用默认构造的元素
// clear(): 移除所有元素
v.clear();
std::cout << "Size after clear: " << v.size() << std::endl;
// empty(): 检查容器是否为空
std::cout << (v.empty() ? "Vector is empty" : "Vector is not empty") << std::endl;
// 再次初始化vector用以说明迭代器操作
v = {1, 2, 3, 4, 5};
// begin(), end(): 迭代器操作
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// rbegin(), rend(): 反向迭代器操作
for (std::vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 使用下标随机访问
std::cout << "Element at index 2: " << v[2] << std::endl;
// 使用at()防止越界(它会检查索引并抛出std::out_of_range异常)
std::cout << "Element at index 3: " << v.at(3) << std::endl;
// 演示reserve(): 预分配容量
v.reserve(10);
std::cout << "Capacity after reserve: " << v.capacity() << std::endl;
return 0;
}
原文始发于微信公众号(赛博安全狗):【开发内功】STL vector学习
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论