请教一个有关容器拷贝的有关问题
请问一个有关容器拷贝的问题
请问下面的代码为何不能运行:
代码如下:
#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<set>
using std::set;
#include<algorithm>
using std::for_each;
class val_of_vector
{
public:
val_of_vector()=default;
val_of_vector(const vector<double>&vd)
:v_v(vd){}
vector<double> re_val()const{return v_v;}
private:
vector<double> v_v;
};
int main()
{
vector<double>vb;
for(size_t i=0;i<10;i++)
vb.emplace_back(i%2);
val_of_vector v0(vb);
set<double>sd0(v0.re_val().begin(),v0.re_val().end());
for_each(sd0.begin(),sd0.end(),
[](const double &d)
{
cout<<d<<" ";
}
);
cout<<endl;
return 0;
}
------解决思路----------------------
每次调用re_val()的时候都会生成一个临时对象
------解决思路----------------------
就变成了类似
当然会出错
请问下面的代码为何不能运行:
代码如下:
#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<set>
using std::set;
#include<algorithm>
using std::for_each;
class val_of_vector
{
public:
val_of_vector()=default;
val_of_vector(const vector<double>&vd)
:v_v(vd){}
vector<double> re_val()const{return v_v;}
private:
vector<double> v_v;
};
int main()
{
vector<double>vb;
for(size_t i=0;i<10;i++)
vb.emplace_back(i%2);
val_of_vector v0(vb);
set<double>sd0(v0.re_val().begin(),v0.re_val().end());
for_each(sd0.begin(),sd0.end(),
[](const double &d)
{
cout<<d<<" ";
}
);
cout<<endl;
return 0;
}
------解决思路----------------------
每次调用re_val()的时候都会生成一个临时对象
------解决思路----------------------
set<double>sd0(v0.re_val().begin(),v0.re_val().end());
就变成了类似
set<double>sd0(A.begin(),B.end());
当然会出错