1. map 和 vector一般都是配合一起使用的。
  2. 注意循环输入的语法,一般就是取余。
  3. 最后输出的时候要考虑不够8个的情况
#include<bits/stdc++.h>

using namespace std;

string get_file_name(string filepath){
    int end_pos = filepath.size()-1;
    //倒着走,直到到第一个斜杠停下
    for(;end_pos>=0;end_pos--){
        if(filepath[end_pos] == '\\'){// 反斜杠需要进行转义
            break;
        }
    }

    string file  = filepath.substr(end_pos+1, filepath.size()- end_pos -1); //获取filename
    if(file.size()> 16) file = file.substr(file.size()-16,16);
    return file;// 最终返回这个文件名

}


int main(){
    string filepath, length;

    map<string, int> m;
    //准备开始循环记录
    int start_index = 0;
    vector<string> record(8,""); // 只需要循环记录八条即可。

    while(cin>>filepath>>length){
        string file = get_file_name(filepath);
        //改变成想要存储的字符串
        string key = file+" "+length;
        if(m.find(key)==m.end()){// 找不到应该是等于
            m[key] = 1;
            record[start_index] = key;//绝对不要push_back
            start_index = (start_index+1)%8; // index
        }else{
            m[key]+=1;//增加一次,但又不占据条数
        }
    }

    for(int i = 0; i < 8; i++){
        if(record[start_index] != "") // 如果当前数目不够8个。
            cout<<record[start_index]<<" "<<m[record[start_index]]<< endl;

        start_index = (start_index + 1) % 8;
    }

    return 0;

}