2016-04-15 6 views
-5

私は、プッシュバック用のポインタ配列バージョンが何であるか知りたいと思っています。私はベクトルを使用していて、配列を指すポインタに切り替えました。これは私の最初の質問stackoverflowです。それは非常にいいではない場合は申し訳ありません。私はポスト要件を見ていました。C++ - temp.pushback(temp [i])のポインタ配列バージョンは何ですか?

int * Ac::allMatches(string prefix) { 
    int* temp; 
    int pos1, pos2; 

    BinarySearch(prefix, pos1, pos2); 

    for (int i = pos1; i < pos2; i++) { 
     temp.push_back(terms[i]); // Getting an error here in Xcode saying 
            // "Member reference base type int* is not a 
            // structure or union" 
    } 

    return temp; 
} 
+0

このような機能はありません。 'std :: vector'を使いたくない場合は、自分でロールする必要があります。しかし、私はそれがそれの価値があるとは思わない。 –

+0

ありがとうございました。私はそれを考慮した。 –

答えて

1

私はプッシュバックのためのポインタ配列のバージョンが

  1. 計算あなたは、アレイに必要となる要素の数が何であるかを知りたいのです。
  2. 必要な数の要素にメモリを割り当てます。
  3. 配列の要素にアクセスして変更するには、配列のインデックス構文を使用します。これはあなたを提供していませんが、std::vectorは、アレイと自動メモリ管理の大きさはどのような


int * Ac::allMatches(string prefix) { 
    int pos1, pos2; 
    BinarySearch(prefix, pos1, pos2); 

    int size = pos1-pos2; 
    int* temp = new int[size]; 

    for (int i = pos1; i < pos2; i++) { 
     int index = i - pos1; 
     temp[index] = terms[i]; 
    } 

    return temp; 
} 

std::vectorを使用することをお勧めします。 std::vectorを使用するオーバーヘッドは、重要な機能を獲得している間は重要ではありません。

+0

ありがとうございます。私はそれを試みたが、うまくいかなかった。私はもっ​​と今それに取り組んでいます。 –