文字列を十分に並べ替える必要があります。 これを行う最も簡単な方法は、十分なすべてをマップに入れることです。 メモリを効率的に使用するために、(str + i)という接尾辞を渡します。strはchar *で、iは位置接尾辞で始まります。しかし、私はこれらのマップを並べ替えるつもりはないことを知りました。ここでは例マップと部分文字列
typedef std::map < char*, int,Comparator> MapType;
MapType data;
// let's declare some initial values to this map
char* bob=(char*)"Bobs score";
char* marty=(char*) "Martys score";
data.insert(pair<char*,int>(marty+1,15));
data.insert(pair<char*,int>(bob+1,10));
MapType::iterator end = data.end();
for (MapType::iterator it = data.begin(); it != end; ++it) {
std::cout << "Who(key = first): " << it->first;
std::cout << " Score(value = second): " << it->second << '\n';
}
が出力さ
Who(key = first): obs score Score(value = second): 10 Who(key = first): artys score Score(value = second): 15
で行くしかし、strcmp
、文字列を比較するための標準的な機能は、ボブ+ 1とマーティ+ 1のために正常に動作します。それはmarty + 1がbob + 1よりも小さいことを示しています。
は 'Comparator'どのようなものです:
比較機能を実装するための正しい方法は、以下のでしょうか? – hmjd
'Comparator'はどこに定義されていますか? –
もちろん、Comparatorはマップの定義方法( 'char *'、int)... – ShinTakezou