C 中的填充向量

populate Vector in C++

本文关键字:向量 填充      更新时间:2023-10-16

我在C 中的populate_vector函数工作由于我是C 语言的新手,因此很难进入向量概念。

  • 我想做的是获取x,y用于输入(上面但不显示此处),并且具有(3x * 2y)大小向量。并用代表三个像素(红色,绿色,蓝色)
  • 的随机数填充向量
  • 一个1维代表2维矩阵的数组

问题是:该代码无法正常工作。当我运行它时,它只是显示输入输入的代码,然后在输入输入时,就是这样。我不知道为什么它不起作用以及如何更改

    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;
    }

您迭代向量,在每个元素中,您添加两个。因此,这是一个永无止境的循环。

.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;
}

它将为每个元素设置一个随机数。

我建议使用structvector
示例:

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的向量(或数组)简直是混乱。平行阵列很难维护并导致很多缺陷。

更好的解决方案涉及使用结构的数组或向量。