2

我想初始化一个vector. list<int>我使用fill了函数,但我的编译器显示错误。请在这个方向上帮助我。

std::vector<std::list<int>> neighbors(NRecords);
std::fill(neighbors.begin,neighbors.end,&std::vector<int>(NNeighbors)); // ERROR

错误:错误 2 错误 C3867:'std::vector<_Ty>::begin':函数调用缺少参数列表;使用 '&std::vector<_Ty>::begin' 创建指向成员的指针 ...

4

4 回答 4

5

从我可以从代码中推断出,您似乎只是想要这个:

std::vector<std::list<int>> neighbors(NRecords, std::list<int>(NNeighbors));

这使用类似于以下内容的构造函数(链接中的#2) :

vector(size_type count, value_type value);

在上面的调用中,NRecords是向量将包含的元素数量,第二个参数是一个以相同方式初始化的列表(以NNeighbors它的大小开始),用于每个向量元素的值。这样就不必创建具有大小的矢量,然后单独填充它。

为了完整起见,您的std::fill通话有几个问题:

  • 首先,beginandend是函数,所以你需要括号 ( begin())。
  • std::vector其次,当您之前指定它包含s 时,您正在用 s 填充它std::list
  • 接下来,您将传递一个指向值的指针,而不是值本身。
  • 最后,您正在获取您在其中动态创建的临时容器的地址,这是不允许的。不过,你不应该一开始就拿地址。

修正后可以写成:

std::fill(neighbours.begin(), neighbours.end(), std::list<int>(NNeighbors));
于 2013-08-17T05:18:55.367 回答
2

neighbors.begin应该neighbors.begin()

neighbors.end应该neighbors.end()

std::fill(neighbors.begin(),neighbors.end(),std::list<int>(NNeighbors)); 
于 2013-08-17T05:22:37.807 回答
1

std::vector根据 Chris 的帖子使用的构造函数

要不然:

std::fill(neighbors.begin(),neighbors.end(),std::list<int>(NNeighbors));

于 2013-08-17T05:25:51.180 回答
0

如果我正确阅读了您的代码,您只需声明一个列表向量。我已经让它在我的主文件中工作,但不知道如何作为班级的私人成员这样做......

vector< list < string >> hashTable(1373);
于 2016-11-20T07:50:12.660 回答