如何声明一个returns std::list 或std::list 作为参数类型的c++ 函数?

How to declare a c++ function that returns std::list or takes std::list as a parameter type?

我一直在尝试在 c++ 中创建一个函数,它接受一个列表,对其执行一些操作,然后 returns 它。但函数不会接受 std::list 作为有效的 return 类型或参数类型。

#include <iostream>
#include <list>

std::list list_function(int n, std::list progress) {

}

int main() {
    /* std::list<int> test_list = {1, 2, 3, 4, 4854};

    test_list.push_back(10); // some unrelated testing

    for (int x : test_list) {
        std::cout << x << '\n';
    } */
}

我在网上找不到任何答案,我需要做什么?

std::list 是一个模板库,因此您需要一个模板参数才能将其用作类型。

例如:

#include <list>

std::list<int> list_function(int n, std::list<int> progress) {
    return std::list<int>();
}

int main(void) {
    std::list<int> a = list_function(10, std::list<int>());
    return 0;
}

如果你想创建一个通用函数,你也可以像这样使你的函数模板化:

#include <list>

template<typename T>
std::list<T> list_function(int n, std::list<T> progress) {
    return std::list<T>();
}

int main(void) {
    std::list<int> a = list_function(10, std::list<int>());
    std::list<double> b = list_function(10, std::list<double>());
    return 0;
}

要么模板,

template <typename T>
std::list<T> list_function(int n, std::list<T> progress) {
    // ...
}

或提供固定类型

std::list<int> list_function(int n, std::list<int> progress) {
    // ...
}