iterator insert ( iterator position, const T& x );

std::Vector类的insert运算符的函数声明。

该函数的返回类型是指向插入元素的迭代器。我的问题是,考虑到这种返回类型,一开始插入的最有效方法是什么(这是我正在运行的大型程序的一部分,其中速度是至关重要的,所以我正在寻找计算效率最高的方法)。是下面吗?
//Code 1
vector<int> intvector;
vector<int>::iterator it;
it = myvector.begin();
for(int i = 1; i <= 100000; i++){
    it = intvector.insert(it,i);
}

要么,
//Code 2
vector<int> intvector;
for(int i = 1; i <= 100000; i++){
    intvector.insert(intvector.begin(),i);
}

本质上,在代码2中,参数是
intvector.begin()

与在代码1中使用返回的迭代器相比,“按成本计算”以计算方式进行评估,还是两者都应同样便宜/昂贵?

最佳答案

获取插入点的效率至少无关紧要-每次插入时不断改组现有数据的效率低下,这将使它相形见war。

为此,请使用std::deque。

10-04 15:03