int main(){
int n;
cin>>n;
char *str[40];
str=new char [10000][40]; //I don't know how to initialize this array
std::map<char*,int> system;
int i,j;
//solving Question 4C @ Codeforces
for(i=0;i<n;i++){
cin>>str[i];
}
for(i=0;i<n;i++){
int count=0;
for(std::map<char*,int>::iterator iter=system.begin();iter!=system.end();iter++){
if(strcmp(iter->first,str[i])==0){
count=++iter->second;
}
else if(strcmp(str[i],iter->first)>0){
break;
}
}
if(count==0){
system[str[i]]=1;
cout<<"OK"<<endl;
}
else{
char *strint;
strint=new char[5];
strint=convert(count);
strcat(str[i],strint);
cout<<str[i]<<endl;
}
}
質問:http://codeforces.com/problemset/problem/4/C
は私がシナリオを解決する手助けするためにマップの要素としてchar配列を置くことができる方法を探しています、 しかし、 私がなってしまいましたstr [n] [40]をstr、systemとして、 と宣言すると、map.insert(str [i]、1)がこの場合に動作しない理由を説明できますか?概念を明確にするのは甘いでしょう) またはこの場合、 はchar * str [40] arを初期化できませんレイ。
これを行う正当な方法は何ですか?
だから 'std :: string'が好きではない;-)?あなたは現在、大さじのようなリークをコードしています。 – Bathsheba
'std :: vector v(40)'を使わないのはなぜですか? –
'std :: map'のキーとしてポインタを使うのは、通常あなたがしたいことではありません。なぜ 'std :: vector'と' std :: string'を使わないのですか? 1969年のようにプログラムする必要はもうありません。 – molbdnilo