2017-08-20 15 views
-4

生成する文字列のリストを保存します。私は文字列の量を知らないし、同じ文字列がリストにあればそれらを保存したくない。私はリスト内の文字列の数を数えたいと思っています。文字列のリストを格納する方法

ありがとうございます!

+3

'std :: map ' – user0042

答えて

0

std::setを使用すると、要素のソートが自動的に行われ、異なる要素(重複なし)のみが許可されます。

std::set<std::string> s; 

s.emplace("Arthur"); 
s.emplace("Barry"); 
s.emplace("Barry"); 
s.emplace("Barry"); 
s.emplace("Charlie"); 

std::cout << std::size(s) << std::endl; // Outputs '3'. 

あなたは高速アクセスを必要とし、めったにあなたにもstd::vectorを使用して、単純にすべての挿入後に任意の重複を除去することがありますコンテナを更新した場合。

std::vector<std::string> v; 

v.emplace_back("Arthur"); 
v.emplace_back("Barry"); 
v.emplace_back("Barry"); 
v.emplace_back("Barry"); 
v.emplace_back("Charlie"); 

std::sort(std::begin(v), std::end(v)); // Sort needed for 'std::unique' to always work. 
v.erase(std::unique(std::begin(v), std::end(v)), std::end(v)); // Remove duplicates. 

std::cout << std::size(v) << std::endl; // Outputs '3'. 

std::vectorはないはしかしソート要素を保持しません。

+0

すごい!ありがとう! –

+0

'std :: map'を使うと、文字列にcountを関連づけることができます。 'std :: map'は重複を許可しません。 –

+0

'std :: unique'を呼び出す前に、コンテナをソートする必要があります(そうでなければ、連続する重複のみが削除されます)。 – chtz

関連する問題