如何删除向量中指定索引处的元素,然后返回该元素?有没有办法呢?
3 回答
            5        
        
		
erase可以删除指定索引处的元素,但不返回该元素。
你可以这样做:
aboutToBeErased = myVector.at(index);
myVector.erase(myVector.begin() + index);
不过要小心,向量并不擅长删除不在向量末尾的元素。对于大型向量,这可能是一项代价高昂的操作。
于 2012-11-21T19:10:34.353   回答
    
    
            3        
        
		
- 要获取元素,您可以使用 - std::vector::at()- value = mVector.at(n);
- 要擦除, - std::vector::erase()以下将擦除项目编号。- n+1并调整你的向量。- mVector.erase (mVector.begin()+n);
擦除会移动所有元素,因此如果您确实擦除了中间的元素,则会移动索引。
于 2012-11-21T19:09:14.523   回答
    
    
            2        
        
		
这是一个用 C++11 编写的函数,它将从向量中获取第 n 个元素并合理有效地擦除它:
template<typename Vector>
typename Vector::value_type getAndErase( Vector& vec, size_t index )
{
  Assert( index < vec.size() );
  typename Vector::value_type retval = std::move(vec[index]);
  vec.erase( vec.begin()+index );
  return retval;
}
于 2012-11-21T19:16:26.120   回答