gpt4 book ai didi

c++ - 在函数中使用 vector 指针时出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:50 25 4
gpt4 key购买 nike

我有这段代码,但它无法编译,我不明白哪里出了问题 - 我猜 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com