арифметическая операция над списком :: итератор? - PullRequest
1 голос
/ 08 февраля 2012

Я получил list вот так:

list<float> l;

И я знаю, что в l есть 10 элементов, я хочу взять первые 7 элементов из l и присвоить их vector, поэтому я попытался сделать это так:

vector<float> v(l.begin(), l.begin()+7);

Приведенный выше код не может быть скомпилирован, позже я обнаружил, что list не поддерживает произвольный доступ в то время как vector делает, поэтому list::iterator не поддерживает арифметические операции?

Если так, как я могу закончить работу, упомянутую выше?

1 Ответ

4 голосов
/ 08 февраля 2012

Использовать copy_n:

v.resize(7);
copy_n(l.begin(), 7, v.begin());
...