나는 boost::lambda
라이브러리를 배우고 있으며 A
오브젝트에서 값을 추출하여 vector<A>
을 vector<int>
으로 변환하기 위해이 샘플 코드를 작성했습니다.boost :: lambda를 사용하여 멤버 함수 호출하기
class A
{
public:
A(int n) : m_n(n){}
int get() const {return m_n;}
private:
int m_n;
};
int _tmain(int argc, _TCHAR* argv[])
{
using namespace boost::lambda;
std::vector<A> a1;
std::vector<int> a2;
a1.push_back(A(10));
a1.push_back(A(20));
std::for_each(a1.begin(), a1.end(), bind(&std::vector<int>::push_back, var(a2), bind(&A::get, _1)));
return 0;
}
몇 번 시도한 후에 for_each
부분을 사용할 수 있습니다. 그러나 나는 여전히 여러 바인딩으로 그것의 모양을 보지 않습니다. 이것을 쓰는 다른 방법이 있습니까? 가급적 좋아하는 뭔가를하고 싶습니다 : a2.push_back(bind(&A::get,_1));
,하지만 그 컴파일되지 않습니다.
나는 당신이 이미'std :: transform'이 당신의 작업에 더 적합하다는 것을 알고 있다고 가정합니다. –
예, 이것은 구문을 배우기위한 것입니다. – Naveen