C++ 在给定std::vector::data时如何迭代值

C++ 在给定std::vector::data时如何迭代值,c++,c++11,C++,C++11,我有一个以以下格式返回的函数: const value_type* data() const { return data_.data(); } 在电话发出的地方。我正在尝试迭代这些值。但是,当向量内部使用的数组中的第一个元素的指针被给定时,无法理解如何获取迭代器 主叫方: for (auto y:X.data()) std::cout << y << " " <<std::endl; 如果提供X::begin()和X::end()函数,则可以迭代元素

我有一个以以下格式返回的函数:

 const value_type* data() const { return data_.data(); } 
在电话发出的地方。我正在尝试迭代这些值。但是,当向量内部使用的数组中的第一个元素的指针被给定时,无法理解如何获取迭代器

主叫方:

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

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

这里有一个例子。我已经注释掉了建议的代码片段,并用可行的替代方案替换它们:

#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;
}
#包括
#包括
使用value_type=int;
X类{
公众:
使用my_iterator=const std::vector::iterator;
//const value_type*data()const{return data_u.data();}
my_迭代器begin(){返回数据u.begin();}
my_迭代器end(){return data_u.end();}
私人:
向量数据{1,2,3,4,5,6,7};
};
int main()
{
xx{};

//对于(auto y:X.data())std::cout您不能,因为您不知道要迭代多少个元素。有意义的是,只有当我知道有多少个变量时,才能构建迭代器
#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;
}