如何制作一个指向列表迭代器的指针,以作为参数传递到函数中
How can I make a pointer to list iterator to pass into function as an argument?
我有这个函数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
}
}
for (std::set<std::string>::const_iterator it = NameList.begin(); it != NameList.end(); ++it)
std::cout << *it << std::endl;
迭代器取消引用 (*it) 将为您提供包含名称的字符串。
在您的方法中,您应该传递对名称列表的引用,并使用我提供的代码打印每个名称。
编辑 最终代码将如下所示:
void names_list(list<string>& n){
for (list<string>::const_iterator it = n.begin(); it != n.end(); ++it)
std::cout << *it << std::endl;
}
int main()
{
list<string> names;
names.push_back("vivek");
names.push_back("Anup");
names.push_back("kali");
names_list(names);
system("pause"); // return 0
}
确保包含以下库:iostream、列表、字符串
相关文章:
- 使用指向成员的指针将成员函数作为参数传递
- 修改函数中的指针(将另一个指针作为参数传递)
- 将成员函数指针作为参数传递给模板方法
- 使用引用与指针将数组作为参数传递
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 将函数指针数组中的函数指针作为模板参数传递
- 为什么或在什么情况下,你会将参数作为C++中的引用(或指针)传递给函数?
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 如何将指针变量作为引用参数传递?
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- Qt5 - 如何将"QList<T> *"指针作为信号参数传递,并在完成后将其删除?
- C++将指向成员的指针作为模板参数传递
- 通过引用函数传递指针参数是什么意思?
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 将函数指针作为函数参数传递的目的
- 将派生类作为参数传递给方法,该方法是具有智能指针的基类
- 将指针参数传递给双指针参数
- 解析结构并作为指针参数传递
- Qt中的2D游戏:初始化怪物并将动态分配的数组作为指针参数传递