Инициализировать std :: vector из std :: list с помощью итераторов - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь эффективно инициализировать std :: vector из std :: list, но мне не везет.

Например, хотелось бы что-то вроде этого:1003 *

void myFunc(std::list<double>::iterator begin, std::list<double>::iterator end)
{
    std::vector <double> data(begin, end);
    // or
    std::vector <double> data;
    data::insert(data.begin(), data.end());
}

Однако, это не работает, так как контейнеры, кажется, поддерживают только свои собственные типы итераторов?Я что-то пропустил?Разве то, что я пытаюсь сделать, не так легко возможно?

1 Ответ

2 голосов
/ 17 сентября 2011

Ваша первая версия

std::vector<double> data(begin, end);

верна.

Ваша вторая версия должна быть

std::vector<double> data;
data.insert(data.begin(), begin, end);
...