我想知道是否有办法根据用户的输入创建不同的结构。举个例子考虑这个代码
#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是字符串类型,我不能使用这个答案。
答案 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
。