gpt4 book ai didi

c++ - 迭代时跳过相同的 multimap 值

转载 作者:太空狗 更新时间:2023-10-29 20:46:36 25 4
gpt4 key购买 nike

有没有什么好的方法可以在不必删除相同值或创建另一个列表/vector 等的情况下实现下面所需的输出?我正在尝试将在不同文档中找到的单词映射到它们的文档名称,如所需输出所示。

#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <sstream>

using namespace std;

multimap<string,string> inverts;
multimap<string,string>::iterator mit;
multimap<string,string>::iterator rit;
pair<multimap<string,string>::iterator,multimap<string,string>::iterator> ret;

int main(int argc, char* argv[])
{
ifstream infile;

for(int i=1;i<argc;i++)
{
char* fname=argv[i];
char line[1024];
string buff;
infile.open(fname);

while(infile.getline(line,1024))
{
stringstream ss(line);
while(ss >> buff)
inverts.insert(pair<string,string>(buff,fname));
}

infile.close();

}

for(mit=inverts.begin();mit!=inverts.end();mit++)
{
string first=(*mit).first;
cout<<first;
ret=inverts.equal_range(first);

for(rit=ret.first;rit!=ret.second;rit++)
cout<<" "<<(*rit).second;
cout<<endl;

}


return 0;

Output is:

> ./a.out A B
cat A
dog A B
dog A B
fox A B
fox A B
lion B

I need this output:

> ./a.out A B
cat A
dog A B
fox A B
lion B

最佳答案

您可以更改 inverts进入map<string,set<string>> ,将每个单词映射到它出现的文件名集。

关于c++ - 迭代时跳过相同的 multimap 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com