繁体   English   中英

返回向量的奇怪行为

[英]strange behavior of returning a vector

我有以下问题:

#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();

}

输出为60 122。

我以为整个向量data_一遍又一遍地移动,但是为什么在此操作之后begin()end()无效?

每次调用data()时,都将创建向量的临时副本。 然后,您需要对指向不同副本的迭代器进行迭代算术运算。

data()的签名更改为const vector<float>& data()const;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM