2017-03-13 8 views
-1

C++でpopulate_vector関数を使用しています 私はC++言語の初心者であるため、ベクターの概念を理解することは非常に困難です。populate vector in C++

  • 私がしたいことは、入力のためのx、yを得ることです(これは上記ですがここには表示されません)。(3x * 2y)サイズのベクトルがあります。 コード:質問は

(赤、緑、青)
  • 2次元行列を表す1次元アレイ
  • 、画素のトリオを表すための乱数でベクトルを埋めます正しく動作しません。私がそれを実行すると、入力されたコードが表示され、次に入力を入力すると、それだけです。私はそれが動作しない理由を知らないし、それを

    vector<int> xVector((3*x) * (2*y)); 
        vector<int>::iterator iter; 
        srand((unsigned)time(NULL)); 
        // int a = rand() % 255 +1; 
    
    
        for (int i = 0; i < xVector.size(); i++) 
        { 
        int b = rand() % 255 + 1; 
        int c = rand() % 255 + 1; 
    
        xVector.push_back(b); 
        xVector.push_back(c); 
        } 
    
        for (auto i = 0; i < xVector.size(); i++) 
        { 
         cout << "xVector[" << i << "] : " << xVector[i] << endl; 
        } 
    
    +4

    ご質問はありますか? – alexeykuzmin0

    +0

    質問がそこにあります – Daniel

    +5

    いいえ、そうではありません。あなたがしたいことを言っているのですが、コードを投稿しています。コードに問題はありますか?あなたがしたいことをしませんか?代わりにそれは何をするのですか? – Lagerbaer

    答えて

    0

    あなたはベクトルを反復処理を変更する方法、および各要素に次の2つ以上を追加します。それは決して終わりのないループです。

    .push_backは、ベクターの最後にその要素を追加します。したがって、size()は常に増加します。

    このようなことをお勧めします。

    vector<int> xVector((3*x) * (2*y)); 
    std::generate(xVector.begin(), xVector.end(), []{return rand() % 255 + 1;}); 
    

    たり、ループ

    for (int i = 0; i < xVector.size(); ++i){ 
        xVector[i] = rand() % 255 + 1; 
    } 
    

    のために使用したい場合には、各要素のランダムな番号を設定します。

    +0

    私はそれを使用すると、コンパイル中に式のエラーを表示します。 – Daniel

    +0

    右、私は忘れました。やってみよう。あなたはそれがここで働いていることを確認することができますhttp://cpp.sh/6vkt3 – saykou

    +1

    私はこれがベクトル索引付けについての質問を回避する方法が好きです。私たちは気にしません。とにかく値を入力するだけです。 +1しかし、これはOPによる努力の完全な欠如を示し、デバッガでコードを実行することさえできません。 #include を追加し、255の範囲に実際の意味があるので、ランダムな色データを生成するために名前付き関数を使用することもできます。 –

    0

    vectorstructとすることをおすすめします。
    例:

    struct Point 
    { 
        int x; 
        int y; 
    }; 
    std::vector<Point> database; 
    

    たぶん、あなたは、ピクセルの2Dコンテナ属性たい:

    struct Pixel 
    { 
        unsigned int red; 
        unsigned int green; 
        unsigned int blue; 
    }; 
    std::vector< std::vector<Pixel> > bitmap; 
    

    をベクトル(または配列)を使用して、奇数エントリはXであり、さえエントリはYです、単なるです汚い。並列アレイは維持することが難しく、多くの欠陥をもたらす。

    より良い解決策は、構造体の配列またはベクトルを使用することです。