2
我正在學習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'更適合你的任務。 – 2009-12-14 05:20:58
是的,這只是爲了學習語法。 – Naveen 2009-12-14 05:21:46