正确实施2D矢量人群

Correct implementation of 2d vector population

本文关键字:2D      更新时间:2023-10-16

我在实现文件中有一个构造函数和方法:

Boggle::Boggle(std::string boardString){
dim = sqrt(boardString.size());
vector<vector<char> > grid(dim, vector<char>(dim));
int co = 0;
for (int i = 0; i < dim; i++)
{
    for (int j = 0; j < dim; j++)
    {
        grid[i][j] = boardString[co];
        co++;
    }    
}
}
void Boggle::printMe() {
for (auto inner : grid)
{
    for (auto item : inner)
    {
        cout << item << " ";
    }
    cout << endl;
}
}

该程序执行,但无能为力。如您所见,当我声明矢量时,我已经对矢量进行了尺寸。我相信这个问题在于我的逻辑,即从字符串中将角色分配给向量。

在注释中暗示您的vector grid是您函数的本地。您大多可能想使用类变量,但最终创建了局部变量。您可以使用resize设置网格的尺寸。同样最好是ceil sqrt,以确保我们不会缺少任何字符。

示例:

#include <stdio.h>
#include <vector>
#include <string>
#include <cmath>
#include <iostream>
using namespace std; // Avoid this
class Boggle{
    public:
    int dim;
    vector<vector<char>> grid;
    Boggle(string boardString);
    void printMe();
};

Boggle::Boggle (std::string boardString)
{
  dim = ceil(sqrt(boardString.size ()));
  grid.resize(dim, vector <char>(dim));
  int co = 0;
  for (int i = 0; i < dim; i++) {
    for (int j = 0; j < dim; j++)
    {
      grid[i][j] = boardString[co];
      co++;
    }
  }
}
void Boggle::printMe ()
{
    for (auto inner:grid) {
        for (auto item:inner)
        {
          cout << item << " ";
        }
        cout << endl;
    }
}
int main(){
    Boggle boggle("hello world");
    boggle.printMe();
    return 0;
}

结果:
h e l l

o w o

r l d

相关文章:
  • 没有找到相关文章