我想初始化一个 vector
的 list<int>
.我用了fill
功能,但我的编译器显示错误。请在这方面帮助我。
std::vector<std::list<int>> neighbors(NRecords);
std::fill(neighbors.begin,neighbors.end,&std::vector<int>(NNeighbors)); // ERROR
ERROR: Error 2 error C3867: 'std::vector<_Ty>::begin': function call missing argument list; use '&std::vector<_Ty>::begin' to create a pointer to member ...
最佳答案
根据我可以从代码中推断出的内容,您似乎只是想要这个:
std::vector<std::list<int>> neighbors(NRecords, std::list<int>(NNeighbors));
这使用 a constructor (#2 in link)类似于以下内容:
vector(size_type count, value_type value);
在上面的调用中,NRecords
是 vector 将包含的元素数,第二个参数是一个以相同方式初始化的列表(它以 NNeighbors
开头)作为其大小)用于 vector 的每个元素的值。这样就不必创建具有大小的 vector ,然后单独填充它。
为了完整起见,您的 std::fill
调用有一些问题:
- 首先,
begin
和end
是函数,因此您需要括号 (begin()
)。 - 其次,当您之前指定它包含
std::list
时,您正在用std::vector
填充它。 - 接下来,您将传递一个指向值的指针而不是值本身。
- 最后,您要获取您在其中动态创建的临时容器的地址,这是不允许的。不过,您一开始就不应该记下地址。
更正,可以写成:
std::fill(neighbours.begin(), neighbours.end(), std::list<int>(NNeighbors));
关于c++ - 如何在 C++ 中初始化列表 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18285385/