-1

私はベクトルが初めてで、正方形に配列を表示できるように、正方形にベクトルを表示しようとしています。それは可能ですか、それとも次のように複数のベクトルを表示する必要がありますか:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int>v(3);
    vector<int>w(3);
    vector<int>x(3);
    for(int i = 0; i < 2; i++)
    {
        v[i] = i;
        w[i] = i;
        x[i] = i;
        cout << v[i] << " " << w[i] << " " << x[i] << endl;

    }
    return 0;
} 

画面:

0 0 0 
1 1 1 
2 2 2 

1 つのベクトルを正方形に表示するにはどうすればよいですか? この段階では、ベクトルの値ではなく表示が重要であることを忘れないでください!!

4

4 に答える 4

3

いいえ、あなたのコードは正しくありません。ベクトルは、C++ のすべての配列と同様に、インデックスが 0 です。したがって、有効なインデックスは から0までsize() - 1です。あなたのコードは indexsize()を使用しているため、動作は未定義です。

あなたが主張するのとは異なり、ベクトルへのインデックスとして値を使用する場合、値はかなり重要です。単純に数値を表示したい場合は、ベクトルはまったく必要ありません (範囲は自由に選択できます)。

for (int i = 1; i <= 3; ++i)
    std::cout << i << ' ' << i << ' ' << i << '\n';

いいえ、「値の二乗」を表示するために複数のベクトルは必要ありません。1 つのベクトルの内容を複数の行に出力したい場合、1 行にいくつの要素を含めるかを決定し、この数の要素ごとに改行文字を出力するだけです。

std::vector<int> vec = { 1, 3, 5, 7, 9, 2, 4, 6, 8 };
int elements_on_this_line = 0,
    elements_to_output_per_line = 3;
for (int i: vec) {
    std::cout << i;
    elements_on_this_line++;
    if (elements_on_this_line == elements_to_output_per_line) {
        std::cout << '\n';
        elements_on_this_line = 0;
    } else {
        std::cout << ' ';
    }
}
于 2012-09-07T15:34:57.783 に答える
1

正方形に配列を表示できるように、正方形にベクトルを表示しようとしています。それは可能ですか

もちろん?

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> vec { 1, 3, 5, 7, 9, 2, 4, 6, 8};
    auto it = vec.begin();
    for (int y = 0; y < 3; ++y)
    {
        for (int x = 0; x < 3; ++x)
        {
            std::cout << *it++ << ' ';
        }
        std::cout << '\n';
    }
}
于 2012-09-07T15:58:19.417 に答える
1

次のことを行うコードを修正しました。

#include <iostream>

#include <vector>
using namespace std;
int main()
{
  vector<vector<int> > v;
  int k = 0;
  for ( int i = 0; i < 5; i++ ) {
    v.push_back ( vector<int>() );
    for ( int j = 0; j < 5; j++ )
    v[i].push_back ( k++ );
}
for ( int i = 0; i < 5; i++ ) 
{
  for ( int j = 0; j < 5; j++ )
    cout<<v[i][j] <<' ';
    cout<<'\n';
}
}

助けてくれてありがとう。

于 2012-09-07T16:11:22.840 に答える
0

値は同じなので、次のようにすることができます。

int main() {
    std::vector<int>v = {1,2,3};
    for(auto& i : v)
        std::cout << i << " " << i << " " << i << std::endl;
} 
于 2012-09-07T15:43:35.093 に答える