相关疑难解决方法(0)

如何通过索引从std :: vector <>中删除元素?

我有一个std :: vector <int>,我想删除第n个元素.我怎么做?

std::vector<int> vec;

vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);

vec.erase(???);
Run Code Online (Sandbox Code Playgroud)

c++ stl vector erase

464
推荐指数
10
解决办法
69万
查看次数

标准库对自动分配的保证是什么?

C++ 11标准对标准库相关的自移动赋值有何看法?更具体的是,什么(如果有的话)保证什么selfAssign呢?

template<class T>
std::vector<T> selfAssign(std::vector<T> v) {
  v = std::move(v);
  return v;
}
Run Code Online (Sandbox Code Playgroud)

c++ stl move-semantics c++11

41
推荐指数
2
解决办法
3488
查看次数

在擦除std :: vector中的n个最后项时是否进行了优化

据我所知,如果向量的顺序并不重要,它是更快地使用了swap- pop_back成语用于除去单个项目std::vector.例如:

auto it = std::find(my_vec.begin(),my_vec.end(),SOME_VALUE);
std::swap(*it,my_vector.back());
my_vector.pop_back();
Run Code Online (Sandbox Code Playgroud)

前面的示例避免复制许多元素.

从同样的角度来看,如果我想打电话给std::vector::erase一个范围是代表最后n的一个项目std::vector,就对它进行优化,并且表现得像多pop_back

例:

auto it = std::find(my_vec.begin(),my_vec.end(),SOME_VALUE);
my_vec.erase(it,my_vec.end()); // Erase everything from 'it' and beyond
Run Code Online (Sandbox Code Playgroud)

c++ vector c++11

3
推荐指数
1
解决办法
396
查看次数

列表与矢量,循环时删除元素

我需要一个容器,允许我在循环它时快速擦除一个元素.我不需要直接访问,因为我总是在循环中访问它.

List不是快Vector这种情况?

伪代码:

vector<Item*> myContainer;

for(..loop over it...) {

  if (someCondition)
    myContainer.erase(currentElement)
}
Run Code Online (Sandbox Code Playgroud)

删除一个元素后,我需要继续循环其余的元素

c++ performance list vector

2
推荐指数
2
解决办法
3188
查看次数

标签 统计

c++ ×4

vector ×3

c++11 ×2

stl ×2

erase ×1

list ×1

move-semantics ×1

performance ×1