我编写了一个矢量用法代码,用于存储所需矢量长度的整数。即
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; 我在这里做错了什么?
答案 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;