以下可以吗?
int n=5;
map<string,int> * maps = (map<string,int> *)malloc(n*sizeof(map<string,int>));
for (int i=0; i<n; i++) {
maps[i] = map<string,int>();
char * i_str = (char *)malloc(10);
sprintf(i_str,"%d",i);
char * key = (char *)malloc(100);
strcpy(key,"key");
strcat(key,i_str);
(maps[i])[string(key)] = i*i;
}
我知道人们说在 C++ 中使用 new 而不是 malloc。但是如果我这样做,如果出现任何问题怎么办?
编辑:代码编译良好并且运行良好(g++ 4.6.3)。不知道为什么这个问题被搁置,但我只想知道它在技术上是否正确(我不关心风格)。我不确定的一件事是这条线是否
maps[i] = map<string,int>();
在语法上是正确的,以及它是否真的会导致一个人建议的意外行为。
有人还没有提供对 C++ 规范的引用,表明我正在做的事情是未定义的。所以这个问题仍然没有答案。