C++ 2d vector-查找重复元素/获取索引位置并计数重复项
我有一个2d向量,包含文件中的文本行,如何获取重复行的索引并计算它们C++ 2d vector-查找重复元素/获取索引位置并计数重复项,c++,vector,C++,Vector,我有一个2d向量,包含文件中的文本行,如何获取重复行的索引并计算它们 for (unsigned int i = 0; i < myFileNames.size(); ++i) { infile.open("Whatever\\WhereEver\\" + myFileName[i]); if (!infile.eof()) { std::vector < std::ve
for (unsigned int i = 0; i < myFileNames.size(); ++i)
{
infile.open("Whatever\\WhereEver\\" + myFileName[i]);
if (!infile.eof())
{
std::vector < std::vector< std::string>> lines;
while (getline(infile, line))
{
std::vector < std::string> tokens;
std::istringstream ls(line);
std::string token;
while (ls >> token)
tokens.push_back(token);
if (tokens.size())
lines.emplace_back(std::move(tokens));
}
for (auto& line : lines)
{
for (auto& token : line)
std::cout << token << ' ';
std::cout << '\n';
}
}
else
{
cout << "Never opened the file line 106 .." << endl;
}
for(unsigned int i=0;i>行;
while(getline(infle,line))
{
std::vector标记;
std::istringstream ls(线);
字符串标记;
while(ls>>令牌)
代币。推回(代币);
if(tokens.size())
行。向后放置(标准::移动(令牌));
}
用于(自动和直线:直线)
{
用于(自动标记:行(&T)
std::cout您可以使用std::map
键作为线向量,使用int
作为值。当您通过主向量时,使用操作符[]
将线向量插入到映射中,并增加int
std::vector < std::vector< std::string>> lines;
std::map<std::vector<std::string>, int> line_counter;
for (const auto & e : lines)
line_counter[e]++;
std::vector>行;
std::映射行_计数器;
用于(常量自动和e:行)
行计数器[e]++;
这将为您计算每行的重复数。您可以使用std::map
键作为行向量,使用int
作为值。当您通过主向量时,使用操作符[]
将行向量插入映射,并增加int
std::vector < std::vector< std::string>> lines;
std::map<std::vector<std::string>, int> line_counter;
for (const auto & e : lines)
line_counter[e]++;
std::vector>行;
std::映射行_计数器;
用于(常量自动和e:行)
行计数器[e]++;
这将为您计算每行的重复数。回答得很好,谢谢,我如何获得匹配行的索引(索引[])还有计数,当我试着打印出来时,我得到11111111111112111113111211111111111111113…等等,我可以看到计数和索引位置,我想,在这种格式下,我做不了任何有用的事情。很好的回答,谢谢,我如何得到匹配行的索引(索引[])而计数,当我试图打印出来时,我得到11111111112111113111211111111111111111113…等等,我可以看到计数和索引位置,我想,在这种格式下,我做不到任何有用的事情