首页 > 解决方案 > 具有来自另一个向量的更新数据的向量范围构造函数

问题描述

是否可以vector< pair <int,int> >使用另一个范围构造函数创建vector<int>?例如。

vector < pair <int, int>>

其中第一个是vector<int>数据,第二个是索引。

标签: c++vectorconstructor

解决方案


您想转换原始向量,例如,使用可变 lambda:

int main () {
    std::vector<int> foo{1, 2, 3, 4};

    std::vector<std::pair<int, int>> bar;

    int i = 0;
    std::transform(foo.begin(), foo.end(), std::back_inserter(bar), [i](int x) mutable {return std::make_pair(x, i++);});    
}

范围构造函数将不起作用,因为您需要转换运算符,因此该transform算法是最佳选择。您可以将它包装在一个函数中,然后它的行数与范围构造函数相同。


推荐阅读