📅  最后修改于: 2023-12-03 15:10:27.701000             🧑  作者: Mango
在C++的STL中,我们可以使用一些容器来存储数据。值得一提的是,这些容器可以通过标准库提供的方法来保证单独链接,无需使用指针。在本文中,我们将介绍如何在C++ STL中实现单独链接的程序。
vector是一个动态数组,可以存储可变长度的元素。通过以下代码片段来创建一个单独链接的vector程序。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> myVector { 1, 2, 3, 4, 5 };
for (auto& element : myVector) {
std::cout << element << ' ';
}
return 0;
}
上述代码中,我们可以看到void push_back(const T& value) 中的signature是const T&。这就保证了我们不需要使用指针来访问数据。输出为:
1 2 3 4 5
list是一个双向链表,可以在两个方向上访问元素。通过以下代码片段来创建一个单独链接的list程序。
#include <iostream>
#include <list>
int main()
{
std::list<int> myList { 1, 2, 3, 4, 5 };
for (auto& element : myList) {
std::cout << element << ' ';
}
return 0;
}
与vector类似,我们可以看到void push_back(const T& value) 中的signature是const T&。这就保证了我们不需要使用指针来访问数据。输出为:
1 2 3 4 5
deque是一个双端队列,可以在两个端点上访问元素。通过以下代码片段来创建一个单独链接的deque程序。
#include <iostream>
#include <deque>
int main()
{
std::deque<int> myDeque { 1, 2, 3, 4, 5 };
for (auto& element : myDeque) {
std::cout << element << ' ';
}
return 0;
}
同样的,我们可以看到void push_back(const T& value) 中的signature是const T&。这就保证了我们不需要使用指针来访问数据。输出为:
1 2 3 4 5
stack是一个后进先出的容器。通过以下代码片段来创建一个单独链接的stack程序。
#include <iostream>
#include <stack>
int main()
{
std::stack<int> myStack;
for (int i = 0; i < 5; i++) {
myStack.push(i);
}
while (!myStack.empty()) {
std::cout << myStack.top() << ' ';
myStack.pop();
}
return 0;
}
此外,我们还可以在pop之前先使用top获取而不会删除栈顶元素。输出为:
4 3 2 1 0
queue是一个先进先出的容器。通过以下代码片段来创建一个单独链接的queue程序。
#include <iostream>
#include <queue>
int main()
{
std::queue<int> myQueue;
for (int i = 0; i < 5; i++) {
myQueue.push(i);
}
while (!myQueue.empty()) {
std::cout << myQueue.front() << ' ';
myQueue.pop();
}
return 0;
}
同样的,我们也可以使用front方法来获取队列头部元素而不会删除它。输出为:
0 1 2 3 4
在本文中,我们已经了解了如何在C++ STL中实现单独链接的程序,并使用了vector、list、deque、stack和queue这些容器来存储数据。通过这种方法,我们不仅不需要使用指针访问数据,而且可以保证程序的安全性和可靠性。