1
我有一個std :: vector X的std :: vector,例如,在C++中爲double。複製std :: vector但將lambda應用於每個元素
如何將X轉換爲int的std :: vector Y,使得X [i] .size()== Y [i]適用於所有可接受的索引i?
std::vector< std::vector<int> > X;
...
/* What I want to do should look as follows */
std::vector<int> Y = std::copy_and_transform(X, lambda_to_get_size);
當然,這可以用一個循環來實現,但在C++ 11我們想用lambda表達式來代替。我還沒有在std :: algorithm中找到類似的東西。標準工具似乎只給出了改變原始矢量的變換,並且不允許改變數據類型。
問題是標籤的[標籤:C++ 11],所以我會在拉姆達變化'常量auto'的東西複雜化('decltype(X)::爲const_reference '或別的東西) – Zereges
@Zereges謝謝!明確寫入類型也有效:) – Rakete1111
@Zereges,我不同意Google C++開發團隊在這裏列出的原因:https://google.github.io/styleguide/cppguide.html#auto Stack Overflow是一個教育網站,並顯示完整的類型幫助清晰。我擔心'auto'是一種柺杖,不會考慮發生了什麼事情,並且過度使用/「濫用」的時機已經成熟。 –