如何调整作为struct或class成员的向量的大小?

时间:2017-07-18 19:49:28

标签: c++ class vector struct

我编写了一个结构和类,我想知道如何使用从文本文件中读取的值来调整它们的大小。这是结构和类:

typedef struct Chrom // creating the chrom structure
{
  vector<vector <short int> > bit;
  vector<vector <short int> > WaitingTime; //this is wij in the model
  vector<vector <short int> > WaitingJob;//this is wj in the model, sigma wij must be equal to wj for each job J.
  vector<vector <short int> > StartTime;

  short int FinishTime;// finish time of each job in each machine
  int fit;
} chrom;    

在程序中我读了一个m的数字。 但是在尝试使用chrom.ShortTime.resize(m)的程序中。它给了我一个错误。即使我试着写一个这样的课:

class ProblemConstraint{ 
  short int Jobs, Machines;
public:
  vector <short int> Processing;
  vector <short int> t1;
  vector <short int> t2;
  short int M;
  short int W;
  void set_values(int, int);
  void resize(){
    ProblemConstraint.Processing.resize(Machines);
  }
}ProblemConstraint;

但是我无法调整类中的向量。关于如何在程序中的类或结构中调整向量大小的任何建议?

2 个答案:

答案 0 :(得分:0)

你的问题至少部分是你如何称呼它。

void resize(){
    ProblemConstraint.Processing.resize(Machines);
}

应该是这样的:

void resize(){
    Processing.resize(Machines);
    // OR
    this->Processing.resize(Machines);
}

在任何地方都没有名为“ProblemConstraint”的对象,这是一种类型,因此您无法在其上使用.

答案 1 :(得分:0)

Kevin Anderson解决了您的class定义问题 - 让我解决结构定义问题: -

使用typedef您基本上已完成的内容定义了chrom类型的struct Chrom类型,因此您的chrom.StartTime是无效访问权限。您必须实例化类型chrom的变量才能访问各个成员。试试这个: -

chrom A;
A.StartTime.resize(10);