C++ 返回向量的奇怪行为

C++ 返回向量的奇怪行为,c++,vector,return,C++,Vector,Return,我有以下问题: #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<fl

我有以下问题:

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

}
#包括
#包括
使用名称空间std;
班垫{
公众:
typedef向量::大小\类型大小\类型;
垫(尺寸为k型,尺寸为m型)
:data_uk(k*m){}
内联向量数据()常量{返回数据}
矢量数据;
};
int main(){
matf(6,10);

cout每次调用
data()
时,您都在创建向量的临时副本。然后在指向不同副本的迭代器上执行迭代器算术


使用库的调试版本将
data()
的签名更改为
const vector&data()const;

,这应该已经崩溃了。+1是完整的示例和组成良好的问题。