C++ 2d vector-查找重复元素/获取索引位置并计数重复项

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

我有一个2d向量,包含文件中的文本行,如何获取重复行的索引并计算它们

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…等等,我可以看到计数和索引位置,我想,在这种格式下,我做不到任何有用的事情