我在代码上浪费了更多的时间,这让我越来越困惑。我只需要迭代器的内容,而不是它的地址。下面是我的代码:
Peptides tempPep;
tempPep.set_PEPTIDE("AABF");
std::vector<Peptides>::iterator itPep = std::find_if (this->get_PepList().begin(), this->get_PepList().end(),boost::bind(&Peptides::Peptide_comparison, _1,tempPep));
if (itPep != this->get_PepList().end())
{
Spectra tempSp;
tempSp.set_Charge(1127);
tempSp.set_Snum(1);
std::cout << "without iterator "<< this->get_PepList()[0].get_New_S_num() << std::endl;
// output -> 0
std::cout << "with iterator" << itPep->get_New_S_num() <<std::endl;
//output -> 1129859637
}发布于 2013-05-14 04:18:52
尝试将您的代码更改为以下代码:
std::vector<Peptides> p = this->get_PepList();
std::vector<Peptides>::iterator itPep = std::find_if (p.begin(),
p.end(),boost::bind(&Peptides::Peptide_comparison, _1,tempPep)); 发布于 2013-05-14 04:05:44
如果你想要内容,指向它:*itPep
迭代器重载*运算符并返回数据。(感谢更正,我不知道这一点!)
https://stackoverflow.com/questions/16530211
复制相似问题