向量范围构造函数,其中包含来自另一个向量的更新数据

时间:2018-12-01 10:02:36

标签: c++ vector constructor

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

vector < pair <int, int>>

首先是vector<int>数据,然后是索引。

1 个答案:

答案 0 :(得分:3)

您想使用可变的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算法是最佳选择。您可以将其包装在一个函数中,然后与范围构造函数的行数相同。