在 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 vec = {1, 2, 3, 4, 5}; // 创建一个包含5个整数的向量

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 myList = {1, 2, 3, 4, 5}; // 创建一个包含5个整数的列表

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;

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;

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 mySet = {3, 1, 4, 1, 5}; // 创建一个包含5个整数的集合

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 myMap = {{"a", 1}, {"b", 2}, {"c", 3}}; // 创建一个包含3个键值对的映射

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 myHashMap = {{"a", 1}, {"b", 2}, {"c", 3}}; // 创建一个包含3个键值对的哈希表

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::iterator 表示 vector 容器中元素的迭代器类型。list::iterator 表示 list 容器中元素的迭代器类型。map::iterator 表示 map 容器中元素的迭代器类型。

迭代器类型是容器类与算法类之间的接口,使得算法可以在不同类型的容器上工作。例如,可以使用 std::sort 算法对 vector 容器进行排序,也可以使用 std::sort 算法对 list 容器进行排序,因为这两种容器都支持随机访问迭代器。 

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。