-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 

如何在正方形中显示一个矢量?请记住,在此阶段显示很重要,而不是向量的值!

4

4 回答 4

3

不,你的代码不正确。向量和 C++ 中的所有数组一样,都是从 0 开始索引的;因此有效索引从0size() - 1。您的代码使用 index size(),因此具有未定义的行为。

与您坚持的不同,当您将它们用作向量的索引时,这些值非常重要如果您只是想显示数字,则根本不需要任何向量(您可以随意选择范围):

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

不,您不需要多个向量来显示“平方值”。如果你想将单个向量的内容输出到多行,你所要做的就是决定你想要在一行上有多少个元素,然后在每这么多元素之后输出一个换行符,即

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 回答