c++ - C++ 函数返回迭代器

标签 c++ iterator

下面是一个返回迭代器的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/

相关文章:

c++ - 异常的通用容器

c++ - 将代码从 Visual Basic 移至 C++ 问题

C++11 lambda 通过引用捕获可平凡破坏

JAVA 从条件返回 ArrayList 对象

c++ - 迭代器可以在 C++ 中的 vector 之间共享吗?

java - 如何在android中的字符串中存储迭代器值

c++ - 使用基于范围的 for 循环时需要迭代器

c++ - Media Foundation 中的属性窗口

c++ - 使用 Structs 作为映射中的键,忽略 == 运算符,误报

java - Java 中的不可变对象(immutable对象)和访问数据