Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从向量中删除唯一值并保留重复项_C++_Vector - Fatal编程技术网

C++ 如何从向量中删除唯一值并保留重复项

C++ 如何从向量中删除唯一值并保留重复项,c++,vector,C++,Vector,各位 我试图从向量中删除所有唯一的值。下面是我的程序输出的向量。我想保留在向量中的字符串在灰色框中 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 通信-120-5008 2016年夏季 蒽-140-5306 2016年秋季

各位

我试图从向量中删除所有唯一的值。下面是我的程序输出的向量。我想保留在向量中的字符串在灰色框中

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
通信-120-5008 2016年夏季

蒽-140-5306 2016年秋季

英语-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;
}
set s(listOfCourses.begin(),listOfCourses.end());
assign(s.begin(),s.end());
设置dupremove(duplicateTermsAndSections.begin(),duplicateTermsAndSections.end());
duplicateTermsAndSections.assign(dupremove.begin(),dupremove.end());
对于(vector::iterator itouter=duplicateTermsAndSections.begin();itouter!=duplicateTermsAndSections.end();itouter++)!copyDuplicateTermsAndSections.empty();copyDuplicateTermsAndSections.pop())
{
for(vector::iterator it=listOfCourses.begin();it!=listOfCourses.end();it++)
{
if((*it).find(*itouter)!=string::npos)

cout如果你计算一个频率映射,其中键是你在第二个“-”和下面的空格之间提取的子字符串。当你迭代你的字符串集合时,查看映射。如果键还没有在映射中,则在映射中为该键设置一个值1。如果键在映射中,则增加存储在映射中的值对应于地图

然后,对字符串集合进行第二次遍历,如果提取的子字符串在映射中的对应值为1,则它是唯一的,否则它是重复的


<>我将把它作为练习来为上述算法编写C++特定语法。

你能解释“匹配项”是什么意思吗?“保持重复”是什么意思?与“匹配项”有关的重复是什么??
std::unique
是一个很好的外观at@Galik谢谢你的回复。我更新了原来的帖子。@macroland我已经研究过了。据我所知,它“保持”所有的重复项。我已经删除了所有重复的字符串。我只剩下一个重复项。这正是我想要消除的。剩下的重复项(唯一值)。好的,我想我理解了,但我不太确定。当你说“频率映射”时,你是指像map var;@asmq
map var;