📌  相关文章
📜  无需使用指针即可在C ++ STL中实现单独链接的程序(1)

📅  最后修改于: 2023-12-03 15:10:27.701000             🧑  作者: Mango

在C++ STL中实现单独链接的程序

在C++的STL中,我们可以使用一些容器来存储数据。值得一提的是,这些容器可以通过标准库提供的方法来保证单独链接,无需使用指针。在本文中,我们将介绍如何在C++ STL中实现单独链接的程序。

1. vector

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
2. list

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
3. deque

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
4. stack

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
5. queue

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这些容器来存储数据。通过这种方法,我们不仅不需要使用指针访问数据,而且可以保证程序的安全性和可靠性。