在Linux下使用C++的STL(标准模板库)容器,可以帮助你更高效地管理和操作数据。以下是一些常用STL容器的使用指南:
特点:动态数组,支持随机访问,尾部插入和删除效率高,但中部和头部插入删除效率低。
常用操作:
初始化:
std::vector<int> v1; // 创建空向量
std::vector<int> v2(arr, arr + sizeof(arr) / sizeof(arr[0])); // 从数组初始化
std::vector<int> v3(v2); // 拷贝初始化
std::vector<int> v4(v2.begin(), v2.end()); // 范围初始化
std::vector<int> v5(10, 2); // 初始化为10个2
赋值操作:
v4.assign(v5.begin(), v5.end()); // 拷贝区间赋值
v4.assign(2, 3); // 赋值若干个相同元素
v4 = v1; // 交换内容
v4.swap(v3); // 交换内容
元素操作:
std::cout << v4.size() << std::endl; // 获取元素个数
std::cout << v4.capacity() << std::endl; // 获取容量
std::cout << v4.empty() << std::endl; // 判断是否为空
v4.resize(10); // 调整大小
v4.reserve(12); // 预留空间,不初始化
std::cout << v4.capacity() << std::endl;
取值操作:
std::cout << v4.at(0) << std::endl; // 安全访问
std::cout << v4[0] << std::endl; // 越界风险
std::cout << v4.front() << std::endl; // 获取第一个元素
std::cout << v4.back() << std::endl; // 获取最后一个元素
v4.insert(v4.begin(), 4, 1); // 在开始位置插入
v4.erase(v4.begin()); // 删除指定元素
v4.clear(); // 清空容器
特点:支持在头尾两端高效插入和删除,但不支持随机访问。
常用操作:
std::deque<int> dq;
std::deque<int> dq(arr, arr + sizeof(arr) / sizeof(arr[0]));
std::deque<int> dq(v2);
std::deque<int> dq(v2.begin(), v2.end());
std::deque<int> dq(10, 2);
特点:双向链表,任意位置插入和删除效率高,但不支持随机访问。
常用操作:
std::list<int> lst;
std::list<int> lst(arr, arr + sizeof(arr) / sizeof(arr[0]));
std::list<int> lst(v2);
std::list<int> lst(v2.begin(), v2.end());
std::list<int> lst(10, 2);
特点:有序集合,元素不重复,插入和查询效率高。
常用操作:
std::set<int> s;
std::set<int> s(arr, arr + sizeof(arr) / sizeof(arr[0]));
std::set<int> s(v2.begin(), v2.end());
特点:键值对容器,按键排序,插入和查询效率高。
常用操作:
std::map<std::string, int> m;
std::map<std::string, int> m(std::make_pair("apple", 1), std::make_pair("banana", 2), std::make_pair("orange", 3));
特点:用于遍历容器中的元素,类似于指针。
常用操作:
for (auto it = v4.begin(); it != v4.end(); ++it) {
std::cout << *it << " ";
}
vector
或 deque
。deque
。list
。set
。multiset
。map
或 multimap
。希望这个指南能帮助你更好地理解和使用Linux下的C++ STL容器。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:Linux Oracle触发器使用指南