下面是一个返回迭代器的Java方法
vector<string> types;
// some code here
Iterator Union::types()
{
return types.iterator();
}
我想将这段代码翻译成 C++。我如何从此方法返回 vector 的迭代器?
最佳答案
这将返回一个指向 types
开头的迭代器:
std::vector<string>::iterator Union::types()
{
return types.begin();
}
但是,调用者还需要知道 vector 类型
的end()
。
Java 的 Iterator
有一个方法 hasNext()
:这在 C++ 中不存在。
您可以更改 Union::types()
以返回一个范围:
std::pair<std::vector<std::string>::iterator,
std::vector<std::string>::iterator> Union::types()
{
return std::make_pair(types.begin(), types.end());
}
std::pair<std::vector<std::string>::iterator,
std::vector<std::string>::iterator> p = Union::types();
for (; p.first != p.second; p.first++)
{
}
关于c++ - C++ 函数返回迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822576/