2016-12-01 10 views
-1

すべての人。ベクトルから一意の値を削除し、重複を保持する方法

ベクトルから一意の値をすべて削除しようとしています。以下は私のプログラム出力です。ベクトルに保存したい文字列はグレーのボックスに入っています。

ART-105-1129 Spring 2004 

FILM-298-1129 Spring 2004 

GEOG-298-1370 Spring 2004 

MUSLT-110-1370 Spring 2004 

BCA-298-1617 Spring 2004 

HIST-120-1617 Spring 2004 

COMM-120から5008夏2016

ANTHR-140から5306秋2016

ENGL-122から5355秋2016

私は維持したいコードの後に​​一致する文字列を持っています二番目 "-"。

上記の出力に使用したコードは次のとおりです。

set<string> s(listOfCourses.begin(), listOfCourses.end()); 
listOfCourses.assign(s.begin(), s.end()); 

set<string> dupremove(duplicateTermsAndSections.begin(), duplicateTermsAndSections.end()); 
duplicateTermsAndSections.assign(dupremove.begin(), dupremove.end()); 

for (vector<string>::iterator itouter = duplicateTermsAndSections.begin(); itouter!= duplicateTermsAndSections.end(); itouter++) !copyDuplicateTermsAndSections.empty(); copyDuplicateTermsAndSections.pop()) 
{ 
    for (vector<string>::iterator it = listOfCourses.begin(); it != listOfCourses.end(); it++) 
    { 
    if ((*it).find(*itouter) != string::npos) 
     cout << *it << endl; 
    } 
    cout << endl; 
} 

一致する用語がない文字列を削除したいと考えています。一致する用語は、以下の2つの文字列のようなものです。彼らは両方とも一致する "-1129 Spring 2004"を持っています。以下は

ART-105から1129 2004年春

FILM-298から1129 2004年春

は、彼らが(上記のように)同じ部分を持っていない2つの不一致用語

あるANTHR-140- 5306秋2016

ENGL-122から5355秋2016

+0

「一致する用語」とは何か、「重複を維持する」という意味を説明できますか?重複は「一致する用語」とどのように関連していますか? – Galik

+0

'std :: unique'は良いものです – macroland

+0

@Galikあなたの返信ありがとうございます。元の投稿を更新しました。 – asmcriminal

答えて

0

あなたは鍵があなたのサブある周波数マップを計算する場合は、間に抽出されています2番目の ' - 'と続くスペース。文字列のコレクションを繰り返していくうちに、地図を見てください。キーがまだマップにない場合は、そのキーのマップに値1を設定します。キーがマップ内にある場合は、マップに格納されているマップに対応する値をインクリメントします。

次に、抽出された部分文字列がマップ内の対応する値1を持つ場合、文字列のコレクションを2回通過させます。一意であり、そうでなければ重複します。

上記のアルゴリズムのC++固有の構文を作業するための練習として残しておきます。

+0

さて、私は理解していると思うが、私はあまりよく分からない。あなたが "周波数マップ"と言ったら、マップ varのような意味ですか? – asmcriminal

+0

@asmcriminalむしろ 'map var;' –

関連する問題