c++ - 如何从函数/方法返回迭代器?
问题描述
我试图了解迭代器如何成为返回类型,但我无法这样做。我知道在类集中,该find()
方法返回一个迭代器,但是当我将集类封装在包装Set
类中时,我无法返回迭代器。为什么会这样?
Body of Set class
...
typedef typename set<T>::iterator SetIterator; //No issue
SetIterator Find(T data); //No issue
...
Implementation
...
template <class T>
SetIterator Set<T>::Find(T data) //SetIterator does not name a type error message
{
SetIterator i = dataSet.find(data);
return i;
}
谁能解释我做错了什么?
解决方案
提供程序应采用“SetIterator”名称的范围。MyClass<T>::SetIterator
#include <set>
using namespace std;
template<typename T>
class MyClass {
typedef typename set<T>::iterator SetIterator;
SetIterator Find(T data);
private:
set<T> dataSet;
};
template<typename T>
MyClass<T>::SetIterator MyClass<T>::Find(T data)
{
SetIterator i = dataSet.find(data);
return i;
}
推荐阅读
- ios - 如何快速下载 Pdf 文件并在文件管理器中查找
- php - 满足列的有效负载数据的laravel
- java - 有没有办法将这个接受整数对象集合并添加这些元素的迭代函数转换为递归函数?
- php - 如何使用数组在 PHP Mysqli 中获取结果
- algorithm - 3D 中的最小边界框算法
- r - 如何将长度为 0 的数字向量设置为 0?
- javascript - 如何在 React 的新选项卡中打开一些子链接
- python - 使用现有电子邮件进行注册测试无法在 django manage.py test 命令中的测试数据库上运行
- azure - Azure MS SQL 防火墙设置(动态 IP 公共网络上的 Azure MS SQL 和 WinForms 客户端)什么是最好的安全方法?
- abap - 集群表的内存效率最高:“select count(*)”或“select .. endselect”?