根据用户输入创建结构

时间:2013-05-17 04:11:15

标签: c++ data-structures

我想知道是否有办法根据用户的输入创建不同的结构。举个例子考虑这个代码

#include <iostream>
#include <algorithm>
#include <string>
#include <iomanip>
#include <limits>
#include <stdio.h>
#include <sstream>


using namespace std;
using std::stringstream;
struct rootset {
  double totSize;
  const char *rStrtPtr;
  const char *rEndPtr;

  struct generations {
    double totSize;
    const char *genStrtPtr;
    const char *genEndPtr; 
    int numOfGen;
    string genName;

    struct object {
      double objSize;
      const char *objStrtPtr;
      const char *objEndPtr;
      string id;
      char markBit;
      char objPtr;


      struct freeList {
    double freeSpace;
    int flNumb; 
      };
    };
  } generation;
};

int main()
{

  int gen =0;
  cin >> gen;

  rootset* pRootSet = (rootset*)malloc(1200);

  for( i=0; i<gen; i++) {
    stringstream out;
    out << i;
   string s = out.str();
   string foo = "generation" + s;
   rootset::generations foo;

  }
}

这里用户输入一个数字。基于此我想创建那么多结构。但我无法做到这一点。请帮忙。 我意识到foo是字符串类型,我不能使用这个答案。

1 个答案:

答案 0 :(得分:1)

你可能想要使用malloc,如果你可以避免它(在这种情况下你可以 - 很容易就可以了)。

相反,我会使用std::vector,这会给代码类似:

int gen;
if (cin >> gen) {
    std::vector<rootset> rootsets(gen);
    // code that uses `rootsets` goes here.
}

这将分配gen个不同rootset个对象的向量(大致类似于数组)。你也可以使用malloc做到这一点,但相比之下它是笨拙和困难的(如果你试图使它异常安全,那就会变得更加笨拙和困难 - 到了你的位置在你完成之前几乎重新发明std::vector