C++容器的常用操作

1.Vector

#include <iostream>
#include <vector>
#include <algorithm>  // std::find 和 std::remove

int main() {
    // 初始化一个 vector
    std::vector<int> vec1 = {1, 2, 3, 4, 5};

    // 使用迭代器范围初始化另一个 vector(深拷贝)
    std::vector<int> vec2(vec1.begin(), vec1.end());

    // 插入元素
    vec2.push_back(6);  // 在末尾插入元素 6

    // 查找元素,使用迭代器来查找
    auto it = std::find(vec2.begin(), vec2.end(), 3);  // 查找元素 3
    if (it != vec2.end()) {
        vec2.erase(it);  // 删除找到的元素 3
    }

    // 直接删除特定元素
    vec2.erase(std::remove(vec2.begin(), vec2.end(), 2), vec2.end());  // 删除所有值为 2 的元素

    // 打印 vector 中的所有元素
    for (int val : vec2) {
        std::cout << val << " ";  // 输出: 1 4 5 6
    }
    return 0;
}
find(vec.begin(),vec.end(),value);
vec.erase(it);

2.Set

#include <iostream>
#include <set>

int main() {
    // 初始化一个 set
    std::set<int> s1 = {1, 2, 3, 4, 5}; 

    // 使用迭代器范围初始化另一个 set
    std::set<int> s2(s1.begin(), s1.end());

    // 插入元素
    s2.insert(6);  // 插入元素 6

    // 查找元素
    auto it = s2.find(3);  // 查找元素 3,返回迭代器
    if (it != s2.end()) {
        s2.erase(it);  // 删除找到的元素 3
    }

    // 直接删除特定元素
    s2.erase(2);  // 删除元素 2

    // 打印 set 中的所有元素
    for (int val : s2) {
        std::cout << val << " ";  // 输出: 1 4 5 6
    }

    return 0;
}
set.insert();
set.count();
set.erase();

3.Map

#include <iostream>
#include <map>

int main() {
    // 初始化一个 map
    std::map<int, std::string> m1 = {{1, "one"}, {2, "two"}, {3, "three"}};

    // 使用迭代器范围初始化另一个 map
    std::map<int, std::string> m2(m1.begin(), m1.end());

    // 插入元素
    m2.insert({4, "four"});  // 插入键值对 (4, "four")
    m2[5] = "five";  // 插入或更新键值对 (5, "five")

    // 查找元素
    auto it = m2.find(3);  // 查找键为 3 的元素
    if (it != m2.end()) {
        m2.erase(it);  // 删除键为 3 的元素
    }

    // 直接删除特定键
    m2.erase(2);  // 删除键为 2 的元素

    // 打印 map 中的所有键值对
    for (const auto& [key, value] : m2) {
        std::cout << key << ": " << value << " ";  // 输出: 1: one 4: four 5: five
    }

    return 0;
}
map.insert(make_pair(v1,v2));
map.erase(it);
auto it = map.find(key);
it->first; it->second;

4.Pair

#include <iostream>
#include <utility>  // std::pair

int main() {
    // 创建一个 pair
    std::pair<int, std::string> p1(1, "one");

    // 访问 pair 的元素
    std::cout << "First: " << p1.first << ", Second: " << p1.second << std::endl;  // 输出: First: 1, Second: one

    // 修改 pair 的元素
    p1.first = 2;
    p1.second = "two";

    std::cout << "First: " << p1.first << ", Second: " << p1.second << std::endl;  // 输出: First: 2, Second: two

    // 通过 make_pair 创建一个 pair
    auto p2 = std::make_pair(3, "three");

    std::cout << "First: " << p2.first << ", Second: " << p2.second << std::endl;  // 输出: First: 3, Second: three

    return 0;
}

make_pair(v1,v2);
pair.fisrt,pair.second;

总结

  • vector:支持动态大小和随机访问,适合需要连续存储的场景。
  • set:有序且唯一的元素集合,适合需要高效查找的场景。
  • pair:简单的二元数据结构,用于存储相关联的两个值。
  • map:有序键值对集合,适合快速查找和插入操作的场景。

我在写Leetcode时经常忘记这些容器的用法,其他的容器如list,stack,queue不是很常用,故仅总结出上面四个常用容器,以便速查。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值