如果满足条件,我想要做的只是替换结构向量上的一个结构字段。所以这是我的代码:
struct DataST{
int S_num,Charge,Duplicate_Nu;
float PEP;
string PEPTIDE;
vector<MZIntensityPair> pairs;
bool GetByT(const DataST& r,int T)
{
switch (T)
{
case 1:
return (S_num == r.S_num);
case 2:
return (Charge == r.Charge);
case 3:
return !(PEPTIDE.compare(r.PEPTIDE));
case 4:
return (Duplicate_Nu == r.Duplicate_Nu);
case 5:
return ((S_num == r.S_num)&&(Charge == r.Charge));
default:
return false;
}
}
};
int main()
{
.
.
vector<DataST> spectrums;
.
.
DataST tempDT_dup;
tempDT_dup.PEPTIDE="Test";
replace_if(spectrums.begin(), spectrums.end(), boost::bind(&DataST::GetByT, _1,tempDT_dup,3),11);
.
.
}
所以在这个例子中,如果该项目的 PEPTIDE 字段等于“test”,我想用 11 更改所有 Duplicate_Nu 光谱项目,但是当我想使用函数 GetByT 而不是操作“=”时出现以下错误
/usr/include/c++/4.6/bits/stl_algo.h:4985:4: 错误:'_ first中的 'operator=' 不匹配。_gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* with _Iterator = DataST*, _Container = std::vector, __gnu_cxx::__normal_iterator<_Iterator, _Container>::reference = DataST& = __new_value' /usr/include/c++/ 4.6/bits/stl_algo.h:4985:4: 注意: 候选是: hello_pwiz/hello_pwiz.cpp:14:8: 注意: DataST& DataST::operator=(const DataST&) hello_pwiz/hello_pwiz.cpp:14:8: 注意: 没有已知的参数 1 从 'int DataST::* const' 到 'const DataST&' 的转换</p>