0

以下启动后:

#include <vector>
#include <algorithm>

struct OBJECT{
        char VALUE;
        int COUNTER;
}
vector <OBJECT> MyCollection;   
vector <OBJECT> ::iterator begin,end;
char TEMP;

begin=MyCollection.begin();
end=MyCollection.end();

...我想使用 Find() 函数来搜索向量中 OBJECT 条目的 VALUE 字段,例如:

find (begin, end, TEMP);

(后来成功对找到的对象执行 COUNTER++)。

默认情况下这是不可能的,因为 TEMP 不是 OBJECT 类型,而是一个字符。

有任何想法吗?

作为一名学生,我无法将建议转换为工作代码,因此围绕 .at() 方法编写了自己的解决方案并删除了迭代器开始和结束。

int MyCollectionIterator=MyCollection.size(); 

while(1){
  if(MyCollectionIterator){ 
    if( MyCollection.at(--MyCollectionIterator).VALUE==TEMP ){
          MyCollection[MyCollectionIterator].COUNTER++; 
          break;
    }
  }else break;
} 
4

1 回答 1

1

你想使用这样的std::find_if东西:

struct is_equal {
    char target_;
    isEqual(char target) : target_(target) {};
    bool operator () (const OBJECT& obj) {
        return obj.VALUE == target_;
    };
};
char target_char = // set this to the character you're looking for
vector<OBJECT>::iterator it = std::find_if(begin, end, is_equal(target_char));
if (it != end) {
    it->COUNTER++;
}
于 2013-08-25T16:15:50.840 回答