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不是很常用,故仅总结出上面四个常用容器,以便速查。