2014-02-15 3 views
0

개체의 벡터가 있는데 그 중 몇 개가 특정 속성을 포함하고 있는지 계산하고 싶습니다.벡터의 요소 요소 계산하기

나는 이것이 STL로 할 수 있다고 확신하지만 예제를 찾을 수 없었다. 당연히 루프를 사용하여 스스로 계산할 수도 있지만 여러 번이 작업을 수행해야하며이를 수행하는 간결한 방법을 선호합니다. 당신이 객체가 특정 속성이 얼마나 많은 을 계산하기 위해 찾고 있다면

나는 std::count_if

class MyObj { 
public: 
    std::string name; 
} 

std::vector<MyObj> objects 
int calledJohn = count(objects,this->name,"jonn") 
+0

http://en.cppreference.com/w/cpp : 당신은 람다 함수 또는 다른 호출 객체가 될 수있는 및 술어 (귀하의 경우 objects.beginobjects.end에 있도록) 반복자 범위를 제공해야/algorithm/count – Mat

+0

작은 구글은 때로는 먼 길을 간다. 매트가 제공하는 링크의 예제를 살펴보십시오. – pmr

답변

2

을 의사 코드와 같은 뭔가를 찾고 있어요 가야할 길입니다.

auto calledJohn = std::count_if(std::begin(objects), std::end(objects), 
          [] (const MyObj& obj) { return obj.name == "John"; }); 
3

아래 사용 std::count_if

auto n = std::count_if(objects.begin(), objects.end(), 
         [](const MyObj& o) { return o.name == "jonn";}); 
0

하는 당신을 위해 정확히을 수행하는 알고리즘 헤더에 함수 std::count_if 있습니다 : std::count_if 개체가 값이 있는지 확인합니다 반복 할 수있는 범위와 펑터 오브젝트를합니다.

auto number = std::count_if(objects.begin(), objects.end(), [](const MyObj &object){if(/*your condition*/){return true;}});