在 C++ 中,有许多常见的容器,每种都有其特定的用途和性能特征。以下是一些常见的容器类型:1. 数组(Array):是一组连续存储的相同类型元素的集合。数组的大小在创建时就确定,并且不能动态改变。2. 向量(Vector):是一种动态数组,大小可以在运行时动态增长。`std::vector` 提供了对数组的动态访问和管理。3. 列表(List):是双向链表的一种实现,允许在任意位置高效地插入和删除元素。与向量不同,列表中的元素在内存中不是连续存储的。4. 队列(Queue):是一种先进先出(FIFO)的数据结构,元素的插入和删除操作都发生在队列的两端。`std::queue` 是一个基于其他容器(通常是双端队列)实现的队列。5. 栈(Stack):是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。`std::stack` 是一个基于其他容器(通常是 deque)实现的栈。6. 集合(Set):是一种无序的容器,其中的元素唯一且不重复。`std::set` 提供了对集合的操作,如插入、查找和删除等。7. 映射(Map):是一种关联容器,存储键值对(key-value pairs)。每个键都是唯一的,而且按照某种规则进行排序。`std::map` 提供了对映射的操作,如插入、查找和删除等。8. 哈希表(Hash Table):是一种根据键直接访问值的数据结构,通过哈希函数将键映射到存储桶中。`std::unordered_map` 和 `std::unordered_set` 是基于哈希表实现的关联容器。 这些是 C++ 中的一些常见容器类型,你可以根据具体的需求选择合适的容器来存储和操作数据。
每种容器类型举例说明其用法:
数组(Array):
#include
int main() {
int arr[5] = {1, 2, 3, 4, 5}; // 创建一个包含5个元素的整数数组
std::cout << "Array elements:";
for (int i = 0; i < 5; ++i) {
std::cout << " " << arr[i];
}
std::cout << std::endl;
return 0;
}
向量(Vector):
#include
#include
int main() {
std::vector
std::cout << "Vector elements:";
for (int i = 0; i < vec.size(); ++i) {
std::cout << " " << vec[i];
}
std::cout << std::endl;
return 0;
}
列表(List):
#include
#include
int main() {
std::list
std::cout << "List elements:";
for (const auto& elem : myList) {
std::cout << " " << elem;
}
std::cout << std::endl;
return 0;
}
队列(Queue):
#include
#include
int main() {
std::queue
myQueue.push(1);
myQueue.push(2);
myQueue.push(3);
std::cout << "Queue elements:";
while (!myQueue.empty()) {
std::cout << " " << myQueue.front();
myQueue.pop();
}
std::cout << std::endl;
return 0;
}
栈(Stack):
#include
#include
int main() {
std::stack
myStack.push(1);
myStack.push(2);
myStack.push(3);
std::cout << "Stack elements:";
while (!myStack.empty()) {
std::cout << " " << myStack.top();
myStack.pop();
}
std::cout << std::endl;
return 0;
}
集合(Set):
#include
#include
int main() {
std::set
std::cout << "Set elements:";
for (const auto& elem : mySet) {
std::cout << " " << elem;
}
std::cout << std::endl;
return 0;
}
映射(Map):
#include
#include
int main() {
std::map
std::cout << "Map elements:";
for (const auto& pair : myMap) {
std::cout << " (" << pair.first << ", " << pair.second << ")";
}
std::cout << std::endl;
return 0;
}
哈希表(Hash Table):
#include
#include
int main() {
std::unordered_map
std::cout << "Hash Map elements:";
for (const auto& pair : myHashMap) {
std::cout << " (" << pair.first << ", " << pair.second << ")";
}
std::cout << std::endl;
return 0;
}
--
在 C++ 标准库中,迭代器(iterator)是一种用于访问容器中元素的抽象概念。迭代器类似于指针,它指向容器中的某个元素,可以通过迭代器对该元素进行访问和修改。
迭代器类型是由容器类定义的一个类型,用于表示迭代器。每种容器类都有自己的迭代器类型,例如:
vector
迭代器类型是容器类与算法类之间的接口,使得算法可以在不同类型的容器上工作。例如,可以使用 std::sort 算法对 vector
参考文章
发表评论