-1
클래스 A의 객체에 대한 공유 포인터 벡터가 있다고 가정합니다. 모든 A 객체에 대해 A :: foo 메서드의 모든 반환 값을 수집하고 일부 컨테이너, 다른 벡터 말하기. std::transform
또는 std::for_each
및 std::bind
또는 일부 boost
의 기능을 수행 할 수 있습니까?std :: transform을 사용하여 객체의 함수 호출
class A {
public:
string foo(int p);
};
std::vector<shared_ptr<A>> vec;
당신은'A-> 전화 foo', 당신이 원하는 것 여러 다른 값을 전달해야하는 경우 람다 (lambda) 함수를 사용하는 대신 펑터 (functor)를 만들어서 상태를 저장할 때 저장할 수 있습니다. 대답에 대해 –
고마워요. 나는 람다없이 C++의 이전 버전을위한 방법을 찾고 있었는데, vec의 반복자를 사용하는 우리 자신의 커스텀 펑크 션을 정의하지 않고서도 바인드와 사용 가능한 stl 펑터로이를 수행 할 수있다. – user124
@ZacHowland 또 다른 옵션은 다른 벡터에 값을 넣고'std :: transform'의 바이너리 펑터 오버로드를 사용하는 것입니다. 그러나 문제의 세부 사항의 희소성을 감안할 때, 나는 '42'가 사용할 좋은 번호라고 생각한다. – juanchopanza