C++ 传递任何容器以运行

C++ Pass any container to function

本文关键字:运行 任何容 C++      更新时间:2023-10-16

我正在尝试找到一种方法来遍历任何STL容器。目前我有这个:

std::string range(std::vector<int>& args)
{
    for (auto it : args)
        // do something
}

我正在寻找一种方法,能够将任何类型的任何类型的 STL 容器传递给函数而不是std::vector<int>& args。我该怎么做?

使用模板。

template<typename Container>
std::string range(Container& args)
{
   for (auto it : args)
      // do something
}

可能与特殊类型(例如std::map)重载。

考虑到算法中的所有内容都这样做。

您可以调用copy,例如,在listvector上。

似乎遵循该模式是您最好的选择:

template<class InputIterator>
std::string range(InputIterator first, const InputIterator last)
{
    while(first != last){
        // do something
        ++first;
    }
}

总而言之,这取决于您要做什么,但您很可能可以使用lambda和find算法或accumulate之一来完成您在range中所做的任何事情。

相关文章: