承接Qt/C++软件开发项目,高质量交付,灵活沟通,长期维护支持。需求所寻,技术正适,共创完美,欢迎私信联系!
C++ 标准库提供了丰富的容器(container)类型,用于存储和管理数据。这些容器不仅简化了编程工作,还提供了高效的数据管理和操作方法。本文将详细介绍 C++ 中常见的标准容器类,包括顺序容器、关联容器以及无序关联容器,并探讨它们的特点、使用场景及性能表现。
顺序容器是按照插入顺序存储元素的容器。它们支持随机访问、前向迭代和后向迭代。主要的顺序容器有 std::vector、std::deque、std::list 和 std::forward_list。
#include
#include
int main() {
std::vector vec = {1, 2, 3, 4, 5};
vec.push_back(6); // 尾部插入
for (const auto& elem : vec) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
int main() {
std::deque dq = {1, 2, 3};
dq.push_front(0); // 前端插入
dq.push_back(4); // 尾部插入
for (const auto& elem : dq) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
int main() {
std::list lst = {1, 2, 3};
lst.insert(lst.begin(), 0); // 在开头插入
lst.push_back(4); // 在结尾插入
for (const auto& elem : lst) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
int main() {
std::forward_list flst = {1, 2, 3};
flst.push_front(0); // 在开头插入
for (auto it = flst.begin(); it != flst.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
关联容器以键值对的形式存储数据,并根据键自动排序。主要的关联容器有 std::set、std::map、std::multiset 和 std::multimap。
#include
#include
int main() {
std::set s = {5, 1, 3, 2, 4};
for (const auto& elem : s) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
#include
#include
int main() {
std::multiset ms = {1, 2, 2, 3};
for (const auto& elem : ms) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
无序关联容器也以键值对形式存储数据,但不保证任何特定顺序。主要的无序关联容器有 std::unordered_set、std::unordered_map、std::unordered_multiset 和 std::unordered_multimap。
#include
#include
int main() {
std::unordered_set us = {1, 2, 3, 4, 5};
for (const auto& elem : us) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
int main() {
std::unordered_map um = {{"apple", 1}, {"banana", 2}};
um["orange"] = 3;
for (const auto& [key, value] : um) {
std::cout << key << ": " << value << "\n";
}
return 0;
}
#include
#include
int main() {
std::unordered_multiset ums = {1, 2, 2, 3};
for (const auto& elem : ums) {
std::cout << elem << " ";
}
return 0;
}
#include
#include
int main() {
std::unordered_multimap umm = {{1, "apple"}, {1, "orange"}, {2, "banana"}};
for (const auto& [key, value] : umm) {
std::cout << key << ": " << value << "\n";
}
return 0;
}
C++ 标准库中的容器类为开发者提供了强大的工具来管理数据。选择合适的容器类型取决于具体的应用需求,例如是否需要有序性、是否允许重复元素、是否需要快速的查找和插入等。通过合理选择和使用这些容器,可以编写出更高效、更易维护的代码。