c++ - 如何在 C++ 中初始化列表 vector ?

标签 c++ list memory-management stdvector

我想初始化一个 vectorlist<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 调用有一些问题:

  • 首先,beginend 是函数,因此您需要括号 (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/

相关文章:

c++ - 为什么在 NDS 上整数处理速度比字节快?

c++ - Windows 上 QT4 的 Poppler 库

c++ - 如何查看英特尔 ICC 编译器启用了哪些编译选项?

c++ - C++ 循环中的参数解析类似于 Python。为什么它不起作用?

java - 当 EObject 包含无序的 EList 时如何比较它们之间的相等性?

python - 如何从 Python 中的文件中读取多行列表?

python - Python 列表理解中的多个 If/else

java - 为什么我的 tomcat 应用程序的内存使用量不断增长?

java - Android应用程序执行时间: knowing the thread execution and memory conception

c++ - 我的 C++ 代码在宏+模板编译时失败,为什么会出现这个错误?