C++ 传递任何容器以运行
C++ Pass any container to function
我正在尝试找到一种方法来遍历任何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
,例如,在list
和vector
上。
似乎遵循该模式是您最好的选择:
template<class InputIterator>
std::string range(InputIterator first, const InputIterator last)
{
while(first != last){
// do something
++first;
}
}
总而言之,这取决于您要做什么,但您很可能可以使用lambda和find
算法或accumulate
之一来完成您在range
中所做的任何事情。
相关文章:
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- 如果第一个元素包含任何零,则我的程序以不希望的方式运行
- 如何创建一个模板化函数,可以在任何具有字符串键的 std::map 上运行?
- Antlr cpp 运行时 任何错误的指针转换?
- 继续运行程序而无需任何干预,直到要求退出为止
- 我最近更改了编译器路径以运行 c++ 代码,但现在我无法运行任何 python 代码。我该如何解决这个问题?
- Qt qml - 在没有任何条件的情况下运行一行(while(true))
- 是否有任何 C 函数或 API 来获取当前登录用户下运行的进程列表
- 使用 CodeBlocks + GCC 构建的可执行文件是否可以在任何 Windows 上运行?
- Windows7+:如何构建不需要任何额外/外部运行时库的C++ Windows 控制台应用程序?
- 如何子类可运行任何成员功能
- 由于错误,c ++代码无法在Visual Studios上运行,但不显示任何错误
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- 程序在运行时不执行任何操作
- 无法在 clion 中运行任何程序
- Microsoft Visual Studio Express 2012将不会运行任何程序
- 无法在代码块中的多个文件中运行任何具有类的C++程序
- 除了 clang 之外,"clang -S -emit-llvm file.cpp"运行任何其他可执行文件吗?
- CEF上的WebRTC(getUserMedia)不工作.但它能在Chrome上运行.任何想法
- Eclipse没有运行任何应用程序