在向量中的索引处返回元素
Return element at index in a vector
如何删除向量中指定索引处的元素,然后返回该元素?有没有办法?
erase
可以删除指定索引处的元素,但不返回该元素。
你可以做:
aboutToBeErased = myVector.at(index);
myVector.erase(myVector.begin() + index);
但要小心,向量不擅长删除不在向量末尾的元素。对于大型载体来说,这可能是一项代价高昂的操作。
-
要获取元素,您可以使用
std::vector::at()
value = mVector.at(n);
-
要擦除, 请
std::vector::erase()
以下内容将删除项目编号。n+1
并调整矢量大小。mVector.erase (mVector.begin()+n);
因此,如果您确实擦除中间的元素,则会移动索引。
这是一个用 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;
}
相关文章:
- lower_bound()返回最后一个元素
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 这个返回元素位置的基于循环的函数有什么问题?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 反转后不返回最后一个元素
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- 第 i 个元素返回 i 的函数数组
- 将新元素添加到列表中,并返回对该元素的引用?
- C++ 将向量中出现 n 次的所有元素作为向量返回
- 为什么将函数的返回类型从结构节点*更改为void后,链表的元素没有显示create_ll和显示?
- 元函数使用 decltype 返回元素类型
- Rcpp::Vector <RTYPE>的类返回元素的模板
- 为什么指向 c 字符串中元素的指针不只返回元素?
- 迭代器:如果 '*' 返回元素的引用,为什么删除 *(myList.end()) 会给出 SegFault
- 不确定为什么这不返回元素的索引?
- 在向量中的索引处返回元素
- 返回元素的速度比通过引用和修改发送元素的速度慢
- 函数采用向量、索引和返回元素
- c++返回元素在没有代码的行上给出访问冲突