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

标签 c++ arrays pointers vector

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

相关文章:

c++ - 在编译时已知成员时在函数分支删除中

c++ - 更改 MFC 列表控件标题颜色

C++ 将字符串写入文件 = 额外字节

php - 将多维数组与匹配值合并

c++ - std::random_device 加密安全吗?

javascript - javascript中如何处理海量数组

Ruby,如何获取数组元素的特定百分比

c - 二维数组的问题

c - void 指针发出警告正常吗?

c++ - FSM 在 C++ 中使用成员函数指针