C++ C++;将任何容器传递给函数
我试图找到一种方法来迭代任何STL容器。目前我有:C++ C++;将任何容器传递给函数,c++,c++11,stl,C++,C++11,Stl,我试图找到一种方法来迭代任何STL容器。目前我有: std::string range(std::vector<int>& args) { for (auto it : args) // do something } std::字符串范围(std::vector和args) { 用于(自动it:args) //做点什么 } 我正在寻找一种方法,能够将任何类型的STL容器传递给函数,而不是std::vector&args。我如何才能做到这一点?使用模
std::string range(std::vector<int>& args)
{
for (auto it : args)
// do something
}
std::字符串范围(std::vector和args)
{
用于(自动it:args)
//做点什么
}
我正在寻找一种方法,能够将任何类型的STL容器传递给函数,而不是std::vector&args
。我如何才能做到这一点?使用模板
template<typename Container>
std::string range(Container& args)
{
for (auto it : args)
// do something
}
模板
标准::字符串范围(容器和参数)
{
用于(自动it:args)
//做点什么
}
可能是针对特殊类型的重载(
std::map
。请考虑算法中的所有内容都是这样做的
例如,您可以在列表
和向量
上调用copy
似乎遵循这种模式是你最好的选择:
template<class InputIterator>
std::string range(InputIterator first, const InputIterator last)
{
while(first != last){
// do something
++first;
}
}
模板
std::字符串范围(先输入计数器,后常数输入计数器)
{
while(第一个!=最后一个){
//做点什么
++第一,;
}
}
所有这一切都取决于您的目标,但很可能您可以使用lambda和一个
find
算法或accumulate
来完成您在range
模板std::string range(容器和参数)中所做的任何事情
请继续阅读。您是否正在尝试重新创建?模板中一系列项上的几乎所有操作都已包含在传递开始和结束迭代器中。您是否可以传递设置
到该函数?我想您可能需要将参数设为const
@Bぃぃぃぃぃぃぃぃぃぃぃぃぃぃ?和你的回答一样,他们没有解释原因。。