c++ - 来自两个不同文件的关联值

标签 c++

我有一个 vector 的 vector 。如果它小于特定值或大于另一个值,我想读取它的第一个组件并将其从 vector 中删除。我怎样才能做到这一点? 我的代码是:

int d = sum_et.size();                
vector <float>sum_et                                    
vector <float>sum_ieta_iphi;
vector <vector<float> >v;
sum_et.push_back(energySum);
sum_ieta_iphi[0]=energySum;
sum_ieta_iphi[1]=ieta;
sum_ieta_iphi[2]=iphi;
v.push_back(sum_ieta_iphi);
float max,min;
max=sum_et[(int)(19/20*d)];
min=sum_et[(int)(d/20)];


for (int i=0;i<v.size();i++){
/* line 312 */  if (v[i[0][0][0]]<min || v[i[0][0][0]]>max){
/* line 313 */      v.erase(v[i]);
  }
}

我收到这些错误:

Analysis.cc:312:16: error: invalid types 'int[int]' for array subscript   
Analysis.cc:312:37: error: invalid types 'int[int]' for array subscript
Analysis.cc:313:14: error: no matching function for call to 'std::vector<std::vector<float> >::erase(std::vector<float>&)'

最佳答案

问题是您索引的不是 vector 的东西(整型变量 i)。


还有更好的方法可以做到这一点。请记住,C++ 有很多不错的 algorithms在标准库中,例如 std::copy_if如果谓词为真,它会从一个集合复制到另一个集合。

这可用于将 vector 复制到自身上:

std::copy_if(std::begin(v), std::end(v), std::begin(v),
             [v, min, max](const vector<float>& value)
             { return v[value[0]] >= min && v[value[0]] <= max; });

关于c++ - 来自两个不同文件的关联值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545795/

相关文章:

java - 从 java 调用编译的 C++ exe 文件不起作用

c# - C# 中的 ref 和 out 是否与 C++ 中的指针相同?

C++ 非虚类成员变量内存布局?

c++ - 如何散列std::string?

c++ - 在 Visual Studio 中构建 C++ 项目不会创建任何文件

c++ - For循环索引类型推导最佳实践

c++ - 在 C++ 中重新启动随机数序列

c++ - MFC 应用程序的入口点

c++ - 黑莓 10 中的 TouchEvent

c++ - 您选择的 cpu 不支持 x86-64 指令集