2016-12-01 1 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

의 I 유지하려는 코드 후 일치하는 문자열을 가지고 두번째 "-".

위 출력물에 사용 된 코드는 다음과 같습니다.

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-2 (위와 같이) 같은 문자열을하지 않아도됩니다 5306 년 가을 2016

ENGL-122-5355 가을 2016

+0

"일치 용어"란 무엇이며 "중복 보관"이란 의미를 설명 할 수 있습니까? 중복은 "일치 용어"와 어떤 관련이 있습니까? – Galik

+0

'std :: unique'을 (를) 보니 좋은 분입니다. – macroland

+0

@Galik 답장을 보내 주셔서 감사합니다. 원래 게시물을 업데이트했습니다. – asmcriminal

답변

0

당신은 키가 당신이 사이에 압축을 해제하여 문자열을있는 주파수지도를 계산하는 경우 두 번째 '-'와 뒤에 오는 공백. 문자열 모음을 반복하면서지도를 봅니다. 키가 아직지도에 없으면 해당 키의지도에 1을 입력합니다. 키가지도에 있으면지도에 저장된지도에 해당하는 값을 증가시킵니다.

그런 다음 문자열 모음을 두 번째 통과 시키십시오. 추출 된 부분 문자열의 값이지도에서 1이면 해당 항목이 고유하고 그렇지 않으면 중복됩니다.

위에서 설명한 알고리즘에 대한 C++ 고유 구문을 연습하는 연습으로 남겨 두겠습니다.

+0

좋아, 나는 이해한다고 생각하지만, 나는 너무 확신하지 못한다. "주파수지도"라고 말하면 지도와 같은 의미입니까? – asmcriminal

+0

@asmcriminal 오히려'map var;' –

관련 문제