векторный конструктор диапазона с обновленными данными из другого вектора - PullRequest
0 голосов
/ 01 декабря 2018

Можно ли создать vector< pair <int,int> >, используя конструктор диапазона из другого vector<int>?например,

vector < pair <int, int>>

, в котором первый - это vector<int> данные, а второй - индекс.

1 Ответ

0 голосов
/ 01 декабря 2018

Вы хотите преобразовать свой исходный вектор, например, с помощью изменяемой лямбды:

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 является лучшимвариант.Вы можете заключить его в функцию, и тогда это будет то же количество строк, что и у конструктора диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...