首页 > 编程语言 >Linux C++中STL容器使用指南

Linux C++中STL容器使用指南

来源:互联网 2026-07-27 08:09:02

在Linux环境下使用C++STL容器需确保编译器支持C++11或更高版本,主流GCC已满足。使用时包含对应头文件,推荐直接引入std命名空间或使用std::前缀。常见容器如vector、list等可通过列表初始化或push_back等方法操作。

在Linux环境下用C++ STL容器,第一步得确认编译器支持C++11或更高版本。目前主流Linux发行版默认带的GCC基本都在7以上,对C++11及以后的标准支持得很到位,这点不用太担心。

Linux C++中STL容器使用指南

长期稳定更新的攒劲资源: >>>点此立即查看<<<

下面直接上干货,看看在Linux C++程序里怎么用STL容器,步骤和示例都摆在这儿了。

1. 包含必要的头文件

每个STL容器都有自己专属的头文件,别搞混了。比如:

  • #include —— 向量容器
  • #include —— 列表容器
  • #include —— 双端队列容器
  • #include —— 栈容器
  • #include —— 队列容器
  • #include —— 集合容器
  • #include —— 映射容器
  • #include —— 无序集合容器
  • #include —— 无序映射容器

2. 使用命名空间

为了代码简洁,通常直接引入std命名空间:

using namespace std;

或者,更规范的做法是在每个容器前面加上std::前缀,避免命名冲突:

std::vector vec;

3. 声明和初始化容器

几种常见容器的声明和初始化方式,直接看代码就清楚了。

向量(Vector)

#include 
#include 

int main() {
    // 声明一个整数向量
    vector vec = {1, 2, 3, 4, 5};
    // 添加元素
    vec.push_back(6);
    // 访问元素
    cout << "第一个元素: " << vec[0] << endl;
    // 遍历向量
    for(auto it = vec.begin(); it != vec.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
    return 0;
}

列表(List)

#include 
#include 

int main() {
    // 声明一个整数列表
    list lst = {10, 20, 30, 40};
    // 在开头添加元素
    lst.push_front(5);
    // 遍历列表
    for(auto it = lst.begin(); it != lst.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
    return 0;
}

映射(Map)

#include 
#include 

int main() {
    // 声明一个字符串到整数的映射
    map ageMap = {{"Alice", 30}, {"Bob", 25}};
    // 插入新元素
    ageMap["Charlie"] = 35;
    // 访问元素
    cout << "Alice的年龄: " << ageMap["Alice"] << endl;
    // 遍历映射
    for(auto it = ageMap.begin(); it != ageMap.end(); ++it) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

4. 常用操作

  • 插入和删除元素

    • 向量:push_back()pop_back()insert()erase()
    • 列表:push_front()push_back()pop_front()pop_back()insert()erase()
    • 集合和映射:insert()erase()
  • 查找元素

    • 有序容器(如setmap)用find()方法。
    • 无序容器(如unordered_setunordered_map)用find()同样有效。
  • 遍历容器

    • 传统方式:迭代器(begin()end()
    • 更现代的方式:范围for循环(C++11开始支持)
    for(auto it = vec.begin(); it != vec.end(); ++it) {
        cout << *it << " ";
    }
    // 或者使用范围for循环
    for(const auto& elem : vec) {
        cout << elem << " ";
    }

5. 编译程序

编译时务必要开启C++11或更高版本的标准。比如用g++,加上-std=c++11-std=c++17

g++ -std=c++11 your_program.cpp -o your_program

6. 示例:综合使用多种容器

一个综合示例,演示如何在同一个程序里同时使用vectormap

#include 
#include 
#include 
#include 

int main() {
    // 向量存储一组整数
    std::vector numbers = {10, 20, 30, 40};
    // 映射存储字符串到整数
    std::map nameToAge = {{"Alice", 25}, {"Bob", 30}};

    // 遍历向量
    std::cout << "Numbers: ";
    for(const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 遍历映射
    std::cout << "Name to Age:" << std::endl;
    for(const auto& pair : nameToAge) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    // 在向量末尾添加元素
    numbers.push_back(50);
    // 在映射中插入新条目
    nameToAge["Charlie"] = 35;

    // 输出修改后的内容
    std::cout << "Updated Numbers: ";
    for(const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Updated Name to Age:" << std::endl;
    for(const auto& pair : nameToAge) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

7. 常见注意事项

  • 选择合适的容器: 没有万能的容器。频繁插入删除——list更好;快速查找——setunordered_set更合适。根据场景选,别盲目。

  • 性能考虑: 搞清楚每种容器的插入、删除、查找时间复杂度,才能避免写出性能瓶颈。

  • 内存管理: STL容器自动管理内存,省心。但如果你用了自定义分配器,就得自己盯着点内存使用情况。

  • 线程安全: STL容器本身不是线程安全的。多线程环境下,必须自己加锁或做同步控制,别指望它自己搞定。

有了这些步骤和示例,在Linux下用C++ STL容器管理数据应该不成问题了。如果遇到具体问题,欢迎继续探讨。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。