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;
}