यदि आप सी ++ 11 का उपयोग कर रहे हैं, और केवल उन्हें कॉपी करने के बजाय तत्वों को स्थानांतरित करना चाहते हैं, तो आप std :: move_iterator ( http://en.cppreference.com/w/cpp/iterator/move_iterator ) डालने के साथ (या प्रतिलिपि):
#include
#include
#include
int main(int argc, char** argv) {
std::vector dest{1,2,3,4,5};
std::vector src{6,7,8,9,10};
//Move elements from src to dest.
//src is left in undefined but safe-to-destruct state.
dest.insert(
dest.end(),
std::make_move_iterator(src.begin()),
std::make_move_iterator(src.end())
);
//Print out concatenated vector.
std::copy(
dest.begin(),
dest.end(),
std::ostream_iterator(std::cout, "\n")
);
return 0;
}
यह इन्स के साथ उदाहरण के लिए अधिक कुशल नहीं होगा, क्योंकि उन्हें स्थानांतरित करने से उन्हें अधिक कुशल नहीं है, लेकिन अनुकूलित चाल के साथ डेटा संरचना के लिए, यह अनावश्यक स्थिति की प्रतिलिपि बनाने से बच सकता है:
#include
#include
#include
int main(int argc, char** argv) {
std::vector> dest{{1,2,3,4,5}, {3,4}};
std::vector> src{{6,7,8,9,10}};
//Move elements from src to dest.
//src is left in undefined but safe-to-destruct state.
dest.insert(
dest.end(),
std::make_move_iterator(src.begin()),
std::make_move_iterator(src.end())
);
return 0;
}
चाल के बाद, src का तत्व एक अपरिभाषित लेकिन सुरक्षित-से-नष्ट राज्य में छोड़ा गया है, और इसके पूर्व तत्वों को अंत में सीधे भाग के नए तत्व में स्थानांतरित कर दिया गया था।