私は、比較する地図を作成して、単語のすべての文字が一意であるかどうかを確認しています。このマップを作成すると、対応する文字に1の値が格納されます。問題は、私が文字キーからマップの値を出力するとき、私はすべての値に対して0を受け取るだけです。マップ内のデフォルトの整数値を変更するにはどうすればよいですか?
これを調べようとしている間、誰かが地図のすべての値がゼロにデフォルト設定されていると私に言いましたが、私の整数は変更するために初期化する必要があります。リテラルの整数値を渡すことができるはずなので、整数で初期化する必要があることを完全にはっきりさせることはできません。
あなたは、私はキャラクターがすでにマップ内に存在するかどうかを確認するために単語の文字と私のコードのチェックのために1に渡すようにしようとしています表示されますよう、次は、私が現在持っているコードです:
#include <iostream>
#include <map>
using namespace std;
bool unique(char const* word)
{
map<char,int> cmpr;
for(int i =0; word[i]!='\0';i++)
{
if(cmpr[word[i]])
{
cout<<"Not all unique";
return false;
}
else
{
cmpr.insert(pair<char,int>(word[i],1));
}
cout<<cmpr[char(word[i])];
}
for(map<char,int>::iterator it = cmpr.begin(); it != cmpr.end();it++)
{
cout<<it->first<<" and "<<it->second<<endl;
}
return true;
}
int main()
{
unique("hello");
}
中
そして、私の出力結果(マップノードの第1および第2の値を印刷しようとした場合):
e and 0
h and 0
l and 0
o and 0
文字配列ポインタではなく 'std :: string'を使用することを推奨します。文字配列の一般的な問題の1つは、ターゲット文字列ではなく、順序付けのためのポインタを比較することです。 –
'map'を検索するときは' [] 'よりも 'find'を使います。 'find'は新しいキーを挿入しません。 –