没有来自&#39; int&#39;的参数1的已知转换to&#39; const std :: vector <int>&amp;&#39;

时间:2015-09-23 12:31:46

标签: c++ vector

我编写了一个矢量用法代码,用于存储所需矢量长度的整数。即

std::vector<int>  * parameters;
parameters = new std::vector<int>(10);
for (int x = 0; x < 10; x++)
    parameters[x] = x;

但编译错误:

来自&#39; int&#39;的参数1没有已知的转换到&#39; const std :: vector&amp;&#39; 我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您声明了一个指向矢量的指针,并动态创建一个填充了10个元素的指针。只需声明一个包含10个元素的向量并填充:

std::vector<int> parameters(10);
for (int x = 0; x < 10; x++)
    parameters[x] = x;

如果你坚持使用指向矢量的指针,你必须在使用指针之前取消引用(使用operator*)指针:

(*parameters)[x] = x;

请注意,这个指针的东西很简单。 vector已经通过指针管理自己的内容,并且没有理由再指向管理该内容的实体。

答案 1 :(得分:1)

为什么要制作一个指向矢量的指针?只需使用矢量本身。

std::vector<int> parameters(10);
for (int x = 0; x < 10; x++)
    parameters[x] = x;

否则,如果你把它作为一个指针(我不鼓励),你将不得不首先取消引用它

for (int x = 0; x < 10; x++)
    (*parameters)[x] = x;