rem*_*emo 1 c++ memory-management list stdvector
我想初始化vector的list<int>。我使用fill函数,但是我的编译器显示错误。请朝这个方向帮助我。
std::vector<std::list<int>> neighbors(NRecords);
std::fill(neighbors.begin,neighbors.end,&std::vector<int>(NNeighbors)); // ERROR
Run Code Online (Sandbox Code Playgroud)
错误:错误2错误C3867:'std :: vector <_Ty> :: begin':函数调用缺少参数列表;使用'&std :: vector <_Ty> :: begin'创建一个指向成员的指针...
根据我可以从代码中推断出的内容,看来您只是想要这样:
std::vector<std::list<int>> neighbors(NRecords, std::list<int>(NNeighbors));
Run Code Online (Sandbox Code Playgroud)
这使用类似于以下内容的构造函数(链接中的#2):
vector(size_type count, value_type value);
Run Code Online (Sandbox Code Playgroud)
在上面的调用中,NRecords是向量将包含的元素数量,第二个参数是一个列表,该列表以相同的方式初始化(NNeighbors从其大小开始),用于向量的每个元素的值。这样可以省去创建具有该大小的向量,然后分别填充它的麻烦。
为了完整起见,您的std::fill通话有几处错误:
begin和end是函数,所以你需要括号(begin())。std::vector当您之前指定包含std::lists 时,要用s 填充它。更正后,可以写成:
std::fill(neighbours.begin(), neighbours.end(), std::list<int>(NNeighbors));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13674 次 |
| 最近记录: |