Я попытался передать вектор указателя на функцию insertVector. Так как я не знаю размер массива вектора в основной функции, я создаю массив векторного объекта в функции insertVector. И у меня появилось сообщение об ошибке "Ошибка шины (core dumped)". Она работоспособна, когда я новичок в следующем виде в главной функции. Что я здесь делаю неправильно? вектор * ivec = новый вектор [5]; Я ожидаю такого результата. индекс: 0 тест haha index: 1 тест haha index: 2 теста haha index: 3 теста haha index: 4 test haha
#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
в вашем коде - это указатель на нет.
vector
неявно знает свой собственный размер? Вы не должны отслеживать это.