【问题标题】:How to make a C++ intention list如何制作 C++ 意图列表
【发布时间】:2016-11-02 22:13:53
【问题描述】:

我想像 python 一样制作一个意图列表。

list = [1,2,3,4]
newList = [ i * 2 for i in list ] 

使用 std、iterator 和 lambda 函数,应该可以在一行中做同样的事情。

std::vector<int> list = {1,2,3,4} ; 
std::vector<int> newList = 

你能完成它吗?

【问题讨论】:

    标签: c++ c++11 lambda containers std


    【解决方案1】:

    std::transform 可让您转换值并将它们放在其他位置:

    std::vector<int> list = {1,2,3,4};
    std::vector<int> newList;
    
    std::transform(
        list.cbegin(),
        list.cend(),
        back_inserter(newList),
        [](int x) { return x * 2; });
    

    但实际上,C++ 不是简洁的语言。

    【讨论】:

      【解决方案2】:

      我找到了这个解决方案。但这不是很好。

      std::vector<int> list = {1,2,3,4};
      std::vector<int> newList;
      std::for_each(list.begin(), list.end(),[&newList](int val){newList.push_back(val*2);});
      

      【讨论】:

      • for_each 在 range-for 在轨道上运行的这些日子里变得不那么有意义了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多