📅  最后修改于: 2023-12-03 15:14:00.470000             🧑  作者: Mango
数据结构是计算机科学中最重要的概念之一。它是关于数据组织、管理和存储的方法,以便有效地访问和修改数据。C++作为一门强大的编程语言,提供了许多不同的数据结构来满足不同的需求。
数组是一种线性数据结构,它是一组相同类型的元素的集合,可以通过索引访问各个元素。在C++中,可以使用std::array或原始数组来实现数组数据结构。下面是使用std::array实现数组的例子:
#include <array>
#include <iostream>
int main()
{
std::array<int, 5> a{1, 2, 3, 4, 5};
std::cout << "Size of array a: " << a.size() << '\n';
std::cout << "Element at index 2: " << a[2] << '\n';
return 0;
}
输出:
Size of array a: 5
Element at index 2: 3
链表是一种非线性数据结构,它由一个个节点组成,每个节点包含了数据和指向下一个节点的指针。链表按照节点的顺序进行存储,每个节点的数据可以是任何类型。可以使用std::forward_list或自己实现链表来实现链表数据结构。下面是使用std::forward_list实现链表的例子:
#include <forward_list>
#include <iostream>
int main()
{
std::forward_list<int> list{1, 2, 3, 4, 5};
std::cout << "Element at front of list: " << list.front() << '\n';
list.push_front(6);
std::cout << "Element at front of list after push: " << list.front() << '\n';
return 0;
}
输出:
Element at front of list: 1
Element at front of list after push: 6
栈是一种线性数据结构,它是一组按照后进先出(LIFO)方式存储的元素集合。可以使用std::stack或自己实现栈来实现栈数据结构。下面是使用std::stack实现栈的例子:
#include <iostream>
#include <stack>
int main()
{
std::stack<int> s;
s.push(1);
s.push(2);
s.push(3);
std::cout << "Top element of stack: " << s.top() << '\n';
s.pop();
std::cout << "Top element of stack after pop: " << s.top() << '\n';
return 0;
}
输出:
Top element of stack: 3
Top element of stack after pop: 2
队列是一种线性数据结构,它是一组按照先进先出(FIFO)方式存储的元素集合。可以使用std::queue或自己实现队列来实现队列数据结构。下面是使用std::queue实现队列的例子:
#include <iostream>
#include <queue>
int main()
{
std::queue<int> q;
q.push(1);
q.push(2);
q.push(3);
std::cout << "Front element of queue: " << q.front() << '\n';
q.pop();
std::cout << "Front element of queue after pop: " << q.front() << '\n';
return 0;
}
输出:
Front element of queue: 1
Front element of queue after pop: 2
哈希表是一种非线性数据结构,它是由一个集合、散列表和哈希函数构成的。哈希表使用哈希函数将元素的关键字映射到一个散列表的单元格中。可以使用std::unordered_map或手动实现哈希表来实现哈希表数据结构。下面是使用std::unordered_map实现哈希表的例子:
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> map;
map.insert({"one", 1});
map.insert({"two", 2});
std::cout << "Value of key 'one': " << map["one"] << '\n';
return 0;
}
输出:
Value of key 'one': 1
C++提供了许多不同的数据结构来满足不同的需求。一个好的程序员应该熟悉这些数据结构,以便选择最适合的数据结构来处理不同的问题。