請幫我使用下面的代碼。我需要將長度的字符串添加到矢量中。我不知道如何通過提升來實現它。我的最好的辦法,到目前爲止是:加強綁定到矢量的成員函數
boost::bind(add2Vect, boost::ref(lengths), L::_1)
凡add2Vect是一個簡單的函數,它接受一個載體,一個字符串和字符串的長度添加到載體。 L只是提升的簡寫:: lambda
但是這個解決方案很糟糕,因爲我必須創建一個離散函數。這不是拉姆達斯應該講的。
代碼:
vector<string> strings;
strings.push_back("Boost");
strings.push_back("C++");
strings.push_back("Libraries");
vector<int> lengths;
for_each(strings.begin(), strings.end(),
// add lengths of strings to the vector 'lengths'
);
for_each(lengths.begin(), lengths.end(),
cout << L::_1 << " "
);
你甚至需要'綁定'或我只是沒有得到什麼。你的'for_each'可以用迭代器循環來代替'strings'和'push_back'ing'it-> length()'到'lengths'。或者,像'std :: transform'這樣的東西可以很好地工作。更好的是,不使用單獨的矢量,而是使用'strings'並調用'length()'而不是有2個副本。 – chris
當然... ;-)這只是一個例子。我只是想知道如何使用** boost:bind,lambda :: bind或其他方式。這是一本書的例子,它應該很容易.. – emesx