首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当给出std::向量::数据时,如何迭代值

当给出std::向量::数据时,如何迭代值
EN

Stack Overflow用户
提问于 2016-04-30 15:08:56
回答 1查看 427关注 0票数 3

我有一个函数,返回格式如下:

代码语言:javascript
复制
 const value_type* data() const { return data_.data(); } 

在打电话的地方打电话。我正在尝试迭代这些值。但是当给出指向向量内部使用的数组中的第一个元素的指针时,无法计算出如何获得迭代器。

呼叫方:

代码语言:javascript
复制
for (auto y:X.data()) std::cout << y << " " <<std::endl;

但得到一个

代码语言:javascript
复制
error: invalid range expression of type 'const int *'; no viable 'begin' function available
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 15:33:07

如果提供X::begin()X::end()函数,则可以迭代这些元素。

下面是一个例子。我已经注释掉了建议的代码片段,并将它们替换为可行的备选方案:

代码语言:javascript
复制
#include <iostream>
#include <vector>

using value_type = int;

class X {
public:
    using my_iterator = const std::vector<value_type>::iterator;

    //const value_type* data() const { return data_.data(); }
    my_iterator begin() { return data_.begin(); }
    my_iterator end() { return data_.end(); }

private:
    std::vector<value_type> data_{1,2,3,4,5,6,7};

};


int main()
{
    X x{};

    //for (auto y:X.data()) std::cout << y << " " <<std::endl;
    for (auto y:x) std::cout << y << " " <<std::endl;

    return 0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36956530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档