gpt4 book ai didi

c++ - 如何使指向列表迭代器的指针作为参数传递给函数?

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

我有这个函数 names_list() 来显示列表,我想将对我的字符串列表迭代器的引用传递给这个函数并打印整个列表。

#include <iostream>
#include <list>
using namespace std;

void names_list(list<string>::iterator *i,list<string> *n){
while(*i != *(n.end()))
{
cout<<i<<endl;
i++;
}
}
int main(){
list<string> names;
list<string> *name_ptr = names;
names.push_back("vivek");
names.push_back("Anup");
names.push_back("kali");
list<string>:: iterator iter = names.begin();
names_list(&iter,&name_ptr);
return 0;
}

我该怎么做?

最佳答案

实现函数的最佳方式是按值传递 2 个迭代器(这是 C++ 标准库中的许多算法的工作原理):一个迭代器到列表的开头,一个迭代器到列表的结尾:

void names_list(list<string>::iterator beg, list<string>::iterator end){
while( beg != end)
{
cout << *beg++ << endl; // we increment here
}
}

然后简单地调用你的函数

names_list(names.begin(), names.end());

通过这种方式,您可以将算法与数据结构分开。更好的是,您可以通过模板传递任意迭代器,然后您的函数将适用于任意容器:

template<typename T>
void names_list(typename T::iterator beg, typename T::iterator end)
{
while( beg != end)
{
cout << *beg++ << endl; // we increment here
}
}

关于c++ - 如何使指向列表迭代器的指针作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29991091/

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