c++ - 根据用户输入创建结构

标签 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 是字符串类型,我不能使用这个答案。

最佳答案

如果可以避免的话,您可能不想使用malloc(在这种情况下您可以——很容易做到)。

相反,我会使用 std::vector,它会给出如下代码:

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

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

关于c++ - 根据用户输入创建结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601266/

相关文章:

c++ - 面向对象的C++编程中的复制,引用和指针的用例和首选项

c++ - 如何访问堆栈中对象的成员? C++

c++ - 为模板特化提供*隐式*转换运算符

algorithm - 最小化两个数组的绝对差之和

javascript - 我如何从 javascript 将元素插入到 div 中?

c++ - `if` 语句的奇数表示法

java - 实现一个带有子序列匹配的 sortedMap

python - 分组相关搜索关键字

c++ - 使用开放式寻址将节点插入哈希表[优化逻辑]

c++ - += 一对运算符和 make_pair 与模板