Из того, что я могу вывести из кода, кажется, вы просто хотите:
std::vector<std::list<int>> neighbors(NRecords, std::list<int>(NNeighbors));
Это использует a constructor (#2 in link), похожее на следующее:
vector(size_type count, value_type value);
В приведенном выше вызове NRecords
- это число элементов, которое вектор будет содержать, и второй аргумент, список, который инициализируется таким же образом (он начинается с NNeighbors
в качестве его размера) используется для значения каждого из элементов вектора. Это позволяет создать вектор с размером, а затем заполнить его отдельно.
Для полноты, у вас есть пара вещей неправильно с std::fill
вызова:
- Во-первых,
begin
и end
являются функциями, так что вам нужно круглые скобки (begin()
).
- Во-вторых, вы заполняете его
std::vector
с, когда вы указали ранее, что оно содержит std::list
s.
- Затем вы передаете указатель на значение вместо самого значения.
- Наконец, вы берете адрес временного контейнера, который вы создаете на лету там, что запрещено. Однако вы не должны брать адрес, в первую очередь.
Исправлено, это можно записать в виде:
std::fill(neighbours.begin(), neighbours.end(), std::list<int>(NNeighbors));
Спасибо на самом деле. Не могли бы вы дать мне ссылку на синтаксис. Для меня кажется очень сложным из прототипа функции, чтобы понять это. – remo
@RezaMortazavi, я обновил ответ, чтобы объяснить его более подробно. – chris
Благодарим вас за помощь – remo