我有一个包含文件行的二维向量,如何获得重复行的索引并计算它们。
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;
}
答案 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]++;
这将为您计算每行的重复数量。