Указатель на вектор - PullRequest
       7

Указатель на вектор

5 голосов
/ 24 ноября 2011

У меня есть этот код:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<string> *vecptr;
int veclen;

void getinput()
{
 string temp;
 for(int i = 0; i < 3; i++)
    {
     cin>>temp;
     vecptr->push_back(temp);
    }
    veclen = vecptr->size();
}


int main()
{
 getinput();

    for(int i = 0; i < veclen; i++)
    {
     cout<<vecptr[i]<<endl;
    }

 return 0;
}

Мой компилятор (G ++) выдает мне несколько ошибок: test2.cpp: 28: 17: ошибка: нет совпадения для оператора "operator <<" в "std":: cout << * (vecptr + ((unsigned int) (((unsigned int) i) * 12u))) '... </p>

Что не так?Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

9 голосов
/ 24 ноября 2011

Программа все еще не совсем права. Вы должны инициализировать указатель вектора, а затем дать ему размер и использовать его. Полный рабочий код может быть,

#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<string> *vecptr = new vector<string>(10);
int veclen;

void getinput()
{
 string temp;
 for(int i = 0; i < 3; i++)
    {
     cin>>temp;
     (*vecptr)[i] = temp;
    }
    veclen = (*vecptr).size();
}


int main()
{
 getinput();

    for(int i = 0; i < veclen; i++)
    {
     cout<<(*vecptr)[i]<<endl;
    }

 return 0;
}

Хотя я упомянул размер как 10, вы можете сделать его вариантом.

6 голосов
/ 24 ноября 2011

Вам нужно разыменовать vecptr здесь, чтобы получить базовый вектор:

cout << (*vecptr)[i] << endl;

Вам также нужно будет инициализировать vecptr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...