我有一个函数,返回格式如下:
const value_type* data() const { return data_.data(); } 在打电话的地方打电话。我正在尝试迭代这些值。但是当给出指向向量内部使用的数组中的第一个元素的指针时,无法计算出如何获得迭代器。
呼叫方:
for (auto y:X.data()) std::cout << y << " " <<std::endl;但得到一个
error: invalid range expression of type 'const int *'; no viable 'begin' function available发布于 2016-04-30 15:33:07
如果提供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;
}https://stackoverflow.com/questions/36956530
复制相似问题