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。