Рассмотрим следующий сценарий:
std::vector<int> A;
std::vector<int> B;
std::vector<int> AB;
Я хочу, чтобы AB
имел содержимое A
, а затем содержимое B
в том же порядке.
Подход 1:
AB.reserve( A.size() + B.size() ); // preallocate memory
AB.insert( AB.end(), A.begin(), A.end() );
AB.insert( AB.end(), B.begin(), B.end() );
Подход 2:
std::vector<int> AB ( A.begin(), A.end() ); // calling constructor
AB.insert ( AB.end(), B.begin(), B.end() );
Какой из перечисленных методов более эффективен? Почему? Есть ли другой метод, более эффективный?