我有以下问题:
#include <vector>
#include <iostream>
using namespace std;
class Mat {
public:
typedef vector<float>::size_type size_type;
Mat (size_type k, size_type m)
:data_(k*m){}
inline vector<float> data() const {return data_;}
vector<float> data_;
};
int main(){
Mat f (6, 10);
cout << f.data().size() << " " << f.data().end() - f.data().begin();
}
Run Code Online (Sandbox Code Playgroud)
输出为60 122.
我以为整个矢量data_一遍又一遍地移动,但是为什么在这个操作之后begin()end()无效?
每次调用时都要创建向量的临时副本data().然后,您将对指向不同副本的迭代器执行迭代器算术运算.
将签名更改data()为const vector<float>& data()const;
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |