小编Mon*_*lun的帖子

有没有什么好方法可以删除向量或双端队列中的元素?提供一些示例代码非常欢迎

例如,我很好2矢量,比如矢量电流,矢量to_delete.是否有一些好方法可以删除当前出现的元素.

这是我的方法.我想这看起来不太好.所以请帮帮我.谢谢.

#include <iostream>
#include <vector>
using namespace std;
int main(){
  vector <double> current;
  current.push_back(1.1);
  current.push_back(2.1); 
  current.push_back(3.1); 
  current.push_back(4.1); 
  current.push_back(5.1); 
  current.push_back(6.1); 
  current.push_back(7.1); 
  current.push_back(8.1);
  vector <double> to_delete;
  to_delete.push_back(2.1);
  to_delete.push_back(5.1);
  for(int i = 0;i<to_delete.size();i++){
    int loc = -1;
    for(int j = 0; j < current.size();j++)
    {
      if(current[j]==to_delete[i]){
        loc = j;
        break;
      }
    }
    if(loc >= 0){
      current.erase(current.begin()+loc);
    }
  }

  for(int i = 0;i < current.size();i++){
    cout << current[i]<< endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

使用std :: vector添加和删除大量数据

可能重复:
如何缩小std :: vector的大小?

似乎std::vector即使我打电话也不会释放记忆pop_back(),clear()或者resize().

有什么好方法可以解决这个问题吗?例如,在以下代码中:

#include<vector>
??
using namespace std;
??
int main(){
  int i, j;
  vector<int> v[10000];
  for( i=0 ; i<10000 ; i++ ){
    for( j=0 ; j<100000000 ; j++ ){
      v[i].push_back(j);
    }
    while(v[i].size()>0){
      v[i].pop_back();
    }
    v[i].resize(1);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

向量在完成之前不会释放任何内存.

c++ memory stl vector

0
推荐指数
1
解决办法
427
查看次数

标签 统计

c++ ×2

stl ×2

memory ×1

vector ×1