C++11からこのように書いても、コピーではなく、ムーブされるので安心。
#include <vector>
#include <iostream>
using namespace std;
class X
{
private:
int num;
public:
X(int x){
num=x;
}
int disp(){return num;}
};
vector<X> make_data(){
vector<X> v;
for(int i=0;i<10000;i++){
v.push_back(X(i));
}
return v;
}
int main(void){
vector<X> v = make_data();
for(X x:v){
cout << x.disp() << " ";
}
}