117.info
人生若只如初见

Linux C++STL容器使用指南

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

1. 向量(vector)

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

常用操作

  • 初始化:

    std::vector v1; // 创建空向量
    std::vector v2(arr, arr + sizeof(arr) / sizeof(arr[0])); // 从数组初始化
    std::vector v3(v2); // 拷贝初始化
    std::vector v4(v2.begin(), v2.end()); // 范围初始化
    std::vector 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 dq;
    std::deque dq(arr, arr + sizeof(arr) / sizeof(arr[0]));
    std::deque dq(v2);
    std::deque dq(v2.begin(), v2.end());
    std::deque dq(10, 2);
    

3. 列表(list)

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

常用操作

  • 初始化:
    std::list lst;
    std::list lst(arr, arr + sizeof(arr) / sizeof(arr[0]));
    std::list lst(v2);
    std::list lst(v2.begin(), v2.end());
    std::list lst(10, 2);
    

4. 集合(set)

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

常用操作

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

5. 映射(map)

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

常用操作

  • 初始化:
    std::map m;
    std::map 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容器。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe37fAzsKCANRA1I.html

推荐文章

  • 怎样优化Linux FTP Server带宽使用

    优化Linux FTP服务器的带宽使用可以通过多种方法来实现,以下是一些常见的策略: 选择合适的FTP服务器软件: 选择一个轻量级且高效的FTP服务器软件,如vsftpd、P...

  • Linux mount命令挂载分区到指定目录

    在Linux中,mount命令用于将文件系统挂载到指定的目录。以下是使用mount命令挂载分区的步骤: 查看可用磁盘和分区:
    使用lsblk或fdisk -l命令查看系统中的磁...

  • Tomcat日志中的连接超时如何处理

    在Tomcat中处理连接超时问题通常涉及多个层面的配置和优化。以下是一些详细的步骤和建议,帮助你解决Tomcat中的连接超时问题:
    1. 检查和配置Tomcat连接器 ...

  • Linux Oracle性能优化技巧

    在Linux环境下优化Oracle数据库的性能是一个多方面的过程,涉及到硬件、操作系统配置、数据库管理等多个层面。以下是一些具体的优化技巧:
    硬件优化 增加内...

  • FetchLinux命令行工具有哪些功能

    根据搜索结果,我暂时没有找到FetchLinux相关的信息,但是我可以为您提供Linux命令行工具的功能:
    Linux命令行工具的功能 文件管理:包括文件创建、删除、复...

  • 如何在Debian上安装Swagger

    在Debian上安装Swagger,可以按照以下步骤进行:
    方法一:使用Docker安装 安装Docker:
    如果你还没有安装Docker,可以使用以下命令来安装:
    sudo...

  • C++如何优化Linux系统性能

    在Linux系统中使用C++进行性能优化是一个复杂的过程,涉及到多个层面。以下是一些常见的优化策略和技巧: 算法和数据结构优化: 选择合适的算法和数据结构可以显...

  • 如何解决Ubuntu From Scratch错误

    Ubuntu From Scratch(UFS)是一个项目,它允许用户从零开始构建自己的Ubuntu操作系统。如果在构建过程中遇到错误,通常需要根据具体的错误信息来解决。以下是一...