Given a std::vector which holds objects of MyClass. How can I create another vector which holds just data of one member of MyClass using std::copy? I guess I would have to implement a custom back_inserter but I could not figure out how to do this so far.
struct MyClass {
int a;
}
std::vector<MyClass> vec1;
// I could copy that to another vector of type MyClass using std::copy.
std::copy(vec1.begin(), vec1.end(); std::back_inserter(someOtherVec)
// However I want just the data of the member a, how can I do that using std::copy?
std::vector<int> vec2;
Use
std::transformfor that.(If you can’t use C++11, you could make a function object yourself:
or use
std::tr1::bindif you can use TR1:BTW, as @Nawaz commented below, do a
.reserve()to prevent unnecessary reallocation during the copy.