gpt4 book ai didi

C++11 迭代器接口(interface)

转载 作者:行者123 更新时间:2023-11-30 00:54:53 25 4
gpt4 key购买 nike

是否有可能在 C++11 中创建一个函数,它将接受任何 iterator 作为特定 STL 容器(如 vector)的输入参数> 还是 list

我想写这样的东西

void f(iterator<int> i){
for (auto el : i)
cout << el;
}
int main(){
vector<int> v;
list<int> l;
...
f(v);
f(l);
}

这可能吗?

最佳答案

如果你想让你的函数接受一个迭代器,那么你不能使用 for (auto i: cont) 语法。事实上,这种新的基于范围的 for 语法需要容器,而不是迭代器。

然后,您可以轻松地使您的函数成为一个函数模板,传递容器。

template <class CONT>
void f(CONT &cont){
for (auto el : cont)
cout << el;
}

如果你想继续传递迭代器,那么你也必须采用模板方式,但你必须传递两个迭代器作为参数。一个用于第一个,另一个用于最后(就像 algorithm 所做的那样)。

template <class IT>
void f(IT first, IT last) {
for ( ; first!=last ; ++first)
cout << first;
}

关于C++11 迭代器接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13457653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com