C++ 容器类 <vector>
C++ 容器类
简介
C++ 标准库(Standard Template Library, STL)是 C++ 的一个重要组成部分,它提供了一组通用的模板类和函数,用于处理数据集合。
语法
在 C++ 中,使用
声明一个 vector:
std::vector
添加元素:
myVector.push_back(10);
访问元素:
int firstElement = myVector[0];
获取元素数量:
size_t size = myVector.size();
清空 vector:
myVector.clear();
声明与初始化
#include
#include
int main() {
std::vector
std::vector
std::vector
std::vector
return 0;
}
实例
下面是一个使用
实例
#include
#include
int main() {
// 声明一个存储整数的 vector
std::vector
// 添加元素
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
// 输出 vector 中的元素
std::cout << “Vector contains: “;
for (int i = 0; i < numbers.size(); ++i) {
std::cout << numbers[i] << “ “;
}
std::cout << std::endl;
// 添加更多元素
numbers.push_back(40);
numbers.push_back(50);
// 再次输出 vector 中的元素
std::cout << “After adding more elements, vector contains: “;
for (int i = 0; i < numbers.size(); ++i) {
std::cout << numbers[i] << “ “;
}
std::cout << std::endl;
// 访问特定元素
std::cout << “The first element is: “ << numbers[0] << std::endl;
// 清空 vector
numbers.clear();
// 检查 vector 是否为空
if (numbers.empty()) {
std::cout << “The vector is now empty.” << std::endl;
}
return 0;
}
输出结果:
Vector contains: 10 20 30
After adding more elements, vector contains: 10 20 30 40 50
The first element is: 10
The vector is now empty.
常用成员函数以下是
实例
1、基本操作
实例
#include
#include
int main() {
std::vector
// 输出所有元素
std::cout << “Vector elements: “;
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << “ “;
}
std::cout << std::endl;
// 获取第一个和最后一个元素
std::cout << “First element: “ << vec.front() << std::endl;
std::cout << “Last element: “ << vec.back() << std::endl;
return 0;
}
2、动态增加和删除元素
实例
#include
#include
int main() {
std::vector
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
std::cout << “Vector size: “ << vec.size() << std::endl;
std::cout << “Vector capacity: “ << vec.capacity() << std::endl;
// 删除最后一个元素
vec.pop_back();
std::cout << “After pop_back, size: “ << vec.size() << std::endl;
return 0;
}
3、边界检查和安全访问
实例
#include
#include
int main() {
std::vector
try {
std::cout << vec.at(2) << std::endl; // 正常输出
std::cout << vec.at(5) << std::endl; // 超出范围,抛出异常
} catch (const std::out_of_range& e) {
std::cout << “Exception: “ << e.what() << std::endl;
}
return 0;
}
4、预分配容量
实例
#include
#include
int main() {
std::vector
vec.reserve(10); // 预留容量,避免频繁分配内存
for (int i = 0; i < 10; ++i) {
vec.push_back(i);
std::cout << “Capacity after push_back(“ << i << “): “ << vec.capacity() << std::endl;
}
return 0;
}
与其他容器对比
特性std::vectorstd::arraystd::list大小动态可变编译时固定动态可变存储位置连续内存连续内存非连续内存访问性能随机访问快速随机访问快速随机访问慢,适合顺序访问插入和删除性能末尾操作性能高,其他位置较慢不支持任意位置插入和删除较快内存增长方式容量不足时成倍增长无无