C++语言——容器

C++语言——容器

C++的容器是用于存储和管理数据的数据结构。标准C++库(STL)提供了几种常用的容器类型,包括顺序容器和关联容器。这些容器提供了不同的功能和性能特点,可以根据需求选择合适的容器类型。

下面详细介绍C++的几种常用容器,并给出相应的示例:

  1. 顺序容器:
    • std::vector: 动态数组,支持随机访问和动态大小调整。
    • std::list: 双向链表,支持快速插入和删除操作。
    • std::deque: 双端队列,类似于动态数组,但在两端都可以高效地添加和删除元素。
    • std::array: 固定大小的数组,大小在编译时确定,不支持动态大小调整。
    • std::forward_list: 单向链表,支持快速插入和删除操作,但不支持逆向遍历。

示例:使用std::vector和std::list容器分别存储整数,并进行插入、删除和遍历操作。

#include <iostream>
#include <vector>
#include <list>

int main() {
    
    
    std::vector<int> vec = {
    
    1, 2, 3, 4, 5};
    std::list<int> lst = {
    
    10, 20, 30, 40, 50};

    // 向容器中插入元素
    vec.push_back(6);
    lst.push_front(0);

    // 从容器中删除元素
    vec.pop_back();
    lst.pop_back();

    // 遍历容器并输出元素
    std::cout << "Vector elements: ";
    for (int num : vec) {
    
    
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "List elements: ";
    for (int num : lst) {
    
    
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

Vector elements: 1 2 3 4 5
List elements: 0 10 20 30 40
  1. 关联容器:
    • std::set: 有序集合,不允许重复元素。
    • std::map: 有序键值对集合,键不允许重复。
    • std::multiset: 有序集合,允许重复元素。
    • std::multimap: 有序键值对集合,允许重复键。

示例:使用std::set和std::map容器存储字符串,并演示插入、查找和遍历操作。

#include <iostream>
#include <set>
#include <map>

int main() {
    
    
    std::set<std::string> names;
    names.insert("Alice");
    names.insert("Bob");
    names.insert("Charlie");
    names.insert("Alice"); // 重复元素将被忽略

    std::map<int, std::string> ages;
    ages[25] = "Alice";
    ages[30] = "Bob";
    ages[22] = "Charlie";
    ages[25] = "David"; // 重复键将覆盖原有的值

    // 查找元素
    if (names.find("Alice") != names.end()) {
    
    
        std::cout << "Alice is in the set." << std::endl;
    } else {
    
    
        std::cout << "Alice is not in the set." << std::endl;
    }

    // 遍历容器并输出元素
    std::cout << "Names: ";
    for (const std::string& name : names) {
    
    
        std::cout << name << " ";
    }
    std::cout << std::endl;

    std::cout << "Ages: ";
    for (const auto& entry : ages) {
    
    
        std::cout << "Name: " << entry.second << ", Age: " << entry.first << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

Alice is in the set.
Names: Alice Bob Charlie 
Ages: Name: David, Age: 25 Name: Bob, Age: 30 Name: Charlie, Age: 22 

容器提供了灵活的数据存储和处理方式,可根据需求选择最合适的容器类型。

猜你喜欢

转载自blog.csdn.net/qq_45902301/article/details/131871869
今日推荐