为什么地图跳过第一个字符?

时间:2018-07-11 18:09:20

标签: c++ stl

我正在尝试打印字符串中每个字符的第一次出现。

我的代码有效,但是由于某种原因,它没有记录字符串的第一个字符的第一次出现。 我正在为此目的使用地图(不是最理想的方法,但我正在尝试学习如何使用它们)。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    cin.ignore();
    while(t--){
        string s;
        getline(cin, s);
        map<char, int> m;
        for(int i=0; i<s.size();i++)
            if(!m[s[i]])
                m[s[i]]=i;
        for(auto i: m)
            cout<<i.first<<"-"<<i.second<<' ';
        cout<<endl;
        m.clear();
    }
return 0;
}

输入:

2
geeksforgeeks
geeks for geeks

我的输出:

e-1 f-5 g-8 k-3 o-6 r-7 s-4 
 -5 e-1 f-6 g-10 k-3 o-7 r-8 s-4 

预期输出:

e-1 f-5 g-0 k-3 o-6 r-7 s-4 
 -5 e-1 f-6 g-0 k-3 o-7 r-8 s-4 

0 个答案:

没有答案