Действия с вектором

Рейтинг: 0Ответов: 1Опубликовано: 19.11.2014

Доброго времени суток.

Какая разница между этими операциями, если результат один и тот же? Или это создано для увеличения функционала и гибкости?

#include<iostream>
#inclube<vector>
void main(){
vector<int>vecMyVector(5,1);             
vecMyVector.insert(vecMyVector.end(),3); //1
vecMyVector.push_back(4);                //2
vecMyVector.emplace_back(5);             //3
for(int i=0;i<vecMyVector.size();i++)
{
cout<<vecMyVector[i]<<" "; 
 } 
}

И на эту сроку у меня компилятор (VS 2010) ругается почему-то.

copy(vecMyVector.begin(),vecMyVector.end(),ostream_iterator<int>(cout," "));

Выдает такие ошибки:

 error C2065: 'ostream_iterator' : undeclared identifier
 еrror C2062: type 'int' unexpected

В чем может быть трабл?

Ответы

▲ 1Принят

Ну вообще-то insert и push_back - это просто две разных функции с разным (хоть и схожим) назначением, для которых вы "подогнали" ситуации, в которых они действуют в общем-то аналогично. То, что функцию insert можно вызывать, передавая ей в качестве первого параметра итератор, указывающий на конец вектора, не означает, что сама insert аналогична функции push_back. Что же касается emplace_back, то ее отличие от push_back кроется в целях оптимизации производительности