2d向量 - 查找重复元素/获取索引位置并计算重复项

时间:2015-10-28 19:40:29

标签: c++ vector

我有一个包含文件行的二维向量,如何获得重复行的索引并计算它们。

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;  
        }  

1 个答案:

答案 0 :(得分:0)

您可以使用std::map,其中键作为行向量,值int。当您浏览主矢量时,使用operator[]将线矢量插入地图并增加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]++;

这将为您计算每行的重复数量。