在函数中使用向量指针时出错

Vai*_*orn 1 c++ arrays pointers vector

我有这个代码,但它不会编译,我无法理解有什么问题 - 我猜测向量的指针是不正确的.我的想法是在main()中收集一些数字并将它们存储在一个向量和数组中,然后将它们的内存地址传递给一个函数,并使用指针打印存储的数据.

当我读到有关指针的内容时,我想到了我应该使用它们来节省内存,所以IMO下面的代码不会复制向量和数组的内容但是使用指针来访问它们在内存中的位置 - 这就是我想要做的.

#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;
}
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到了一些错误,有些错误.

请告诉我我的代码有什么问题以及如何修复它.谢谢...

Tro*_*nic 5

您应该通过引用而不是通过指针传递向量:

void function(vector<int>& a, int *s)
Run Code Online (Sandbox Code Playgroud)

然后

function(m, ...);
Run Code Online (Sandbox Code Playgroud)

在指向向量的指针上使用[]肯定会引起奇怪的问题,因为它的行为就像指向std :: vectors的数组(虽然它实际上只指向一个).向量本身从未被索引编入索引.您还可以使用(*a)[...]指针对矢量进行索引.