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() << " ";
    }
}