ベクトルへのポインタ

私はこのコードを持っている:

#include 
#include 
#include 

using namespace std;

vector *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<

My compiler(G++) throw me some errors: test2.cpp:28:17: error: no match for 'operator<<' in 'std::cout << *(vecptr + ((unsigned int)(((unsigned int)i) * 12u)))' ...

どうしましたか?それを修正するために私は何ができますか?

5

2 答え

プログラムはまだ完全に正しくはありません。ベクタポインタを初期化してから、サイズを与えて使用する必要があります。完全な作業コードは、

#include 
#include 
#include 

using namespace std;

vector *vecptr = new vector(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]<

私はサイズを10と言いましたが、あなたはそれを異形にすることができます。

9
追加された

基になるベクトルを取得するには、ここで vecptr を参照解除する必要があります。

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

また、 vecptr を初期化する必要があります。

5
追加された