在c++中将矢量指针作为参数传递

Passing vector pointer as parameter in c++

本文关键字:指针 参数传递 c++      更新时间:2023-10-16

我试图将指针的矢量传递给insertVector函数。由于我不知道main函数中向量数组的大小,所以我在insertVector函数中创建了向量对象的数组。我得到了类似"总线错误(核心转储("的错误消息。当我在主函数中新建如下对象时,这是可行的。我在这里做错了什么?vector*ivec=新向量[5];我期待着这样的结果。索引:0测验哈哈索引:1测验哈哈索引:2测验哈哈索引:3测验哈哈索引:4测验哈哈

        #include<iostream>
        #include<cstring>
        #include<vector>
        using namespace std;
        int insertVector(vector<string> *input)
        {
           int size = 5;
           input = new vector<string>[size];
           for(int k=0; k < size; k++)
           {
              (*input).push_back("test");
              for(int j=0; j<1; j++)
              {
                (*input).push_back("haha");
              }
              input++;
           }
           return size;
        }
        int main()
        {
           vector<string>* ivec;
           int i = insertVector(ivec);
           for(int iy = 0; iy < i; ++iy)
           {
              vector<string>:: iterator iter = ivec[iy].begin();
              cout << "index:" << iy << endl;
              for(int ix = 0; iter != ivec[iy].end(); ++iter, ++ix)
              {
                  cout << *iter << endl;
              }
           }
           return 0;
        }

试试这个:

void AllocateVector(std::vector<int> **pIntVector)
{
    *pIntVector = new std::vector<int>[10];
    (*pIntVector)->push_back(10);
    (*pIntVector)->push_back(20);
}
int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<int> *tmpIntVector;
    AllocateVector(&tmpIntVector);
}

尝试

     vector<string> ivec;

作为起点,并修改代码以反映该更改。

您没有分配vector对象。代码中的ivec是一个指向无位置的指针。