我有这段代码,但它无法编译,我不明白哪里出了问题 - 我猜 vector 的指针不正确。 我的想法是在 main() 中收集一些数字并将它们存储在 vector 和数组中,然后将它们的内存地址传递给函数,并使用指针打印存储的数据。
当我读到一些关于指针的内容时,我想到了这个,它说我应该使用它们来节省内存,所以我认为下面的代码不会复制 vector 和数组的内容,而是使用指针来访问它们内存中的位置 - 这就是我想要做的。
#include <iostream>
#include <vector>
using namespace std;
void function(vector<int>* a, int *s)
{
cout << "function starts.." << endl;
for(int i=0;i<a->size();i++)
{
cout << a[i] << endl;
cout << s[a[i]] << endl;
}
cout << "function ends..." << endl;
}
int main(void)
{
vector<int> m;
int s[102];
for(int i=0;i<10;i++)
{
m.push_back(i*i);
s[i*i] = i-2;
}
function(&m, &s);
return 0;
}
我在编译时收到几个错误,出了点问题。
请告诉我我的代码有什么问题以及如何修复它。谢谢...
最佳答案
你应该通过引用传递 vector ,而不是通过指针:
void function(vector<int>& a, int *s)
然后
function(m, ...);
在指向 vector 的指针上使用 [] 肯定会导致奇怪的问题,因为它的行为就像指向一个 std::vectors 数组(而实际上它只指向一个)。 vector 本身永远不会被它索引。您还可以使用 (*a)[...]
通过指针对 vector 进行索引。
关于c++ - 在函数中使用 vector 指针时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2355585/