Доброго времени суток.
Какая разница между этими операциями, если результат один и тот же? Или это создано для увеличения функционала и гибкости?
#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
В чем может быть трабл?
Ну вообще-то insert и push_back - это просто две разных функции с разным (хоть и схожим) назначением, для которых вы "подогнали" ситуации, в которых они действуют в общем-то аналогично. То, что функцию insert можно вызывать, передавая ей в качестве первого параметра итератор, указывающий на конец вектора, не означает, что сама insert аналогична функции push_back. Что же касается emplace_back, то ее отличие от push_back кроется в целях оптимизации производительности
Продвижение своими сайтами как стратегия роста и независимости