温馨提示×

Linux C++STL容器使用指南

小樊
44
2025-03-21 02:05:49
栏目: 编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Linux下使用C++的STL(标准模板库)容器,可以帮助你更高效地管理和操作数据。以下是一些常用STL容器的使用指南:

1. 向量(vector)

特点:动态数组,支持随机访问,尾部插入和删除效率高,但中部和头部插入删除效率低。

常用操作

  • 初始化:

    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(); // 清空容器
    

2. 双端队列(deque)

特点:支持在头尾两端高效插入和删除,但不支持随机访问。

常用操作

  • 初始化:
    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);
    

3. 列表(list)

特点:双向链表,任意位置插入和删除效率高,但不支持随机访问。

常用操作

  • 初始化:
    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);
    

4. 集合(set)

特点:有序集合,元素不重复,插入和查询效率高。

常用操作

  • 初始化:
    std::set<int> s;
    std::set<int> s(arr, arr + sizeof(arr) / sizeof(arr[0]));
    std::set<int> s(v2.begin(), v2.end());
    

5. 映射(map)

特点:键值对容器,按键排序,插入和查询效率高。

常用操作

  • 初始化:
    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));
    

6. 迭代器

特点:用于遍历容器中的元素,类似于指针。

常用操作

  • 遍历:
    for (auto it = v4.begin(); it != v4.end(); ++it) {
        std::cout << *it << " ";
    }
    

7. 选择合适的容器

  • 需要随机访问:使用 vectordeque
  • 频繁在头尾插入/删除:使用 deque
  • 频繁在中间插入/删除:使用 list
  • 需要有序且不重复的元素:使用 set
  • 需要有序且可重复的元素:使用 multiset
  • 需要键值对:使用 mapmultimap

希望这个指南能帮助你更好地理解和使用Linux下的C++ STL容器。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:Linux Oracle触发器使用指南

0