64,683
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct Pair
{
string name;
double val;
};
vector<Pair> pairs;
double& value(const string& s)
{
for(int i=0; i<pairs.size(); i++)
{
if(s==pairs[i].name)
{
return pairs[i].val; //既然要自加1,为什么一定要返回一个值呢? 而我写成return 0 后,又会报错,为什么?
}
}
Pair p;
p.name =s;
p.val =0;
pairs.push_back(p);
return pairs[pairs.size()-1].val;
}
int main()
{
string buf;
while(cin>>buf&&buf!="#") value(buf)++;
for(vector<Pair>::const_iterator p=pairs.begin(); p!=pairs.end(); ++p)
cout<<p->name<<":"<<p->val<<'\n';
return 0;
}
#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct Pair
{
string name;
double val;
};
vector<Pair> pairs;
double& value(const string& s)
{
for(int i=0; i<pairs.size(); i++)
{
if(s==pairs[i].name)
{
return pairs[i].val; //既然要自加1,为什么一定要返回一个值呢? 而我写成return 0 后,又会报错,为什么?
//因为返回值是个引用所以这里不能返回0,况且这里返回0也不对啊
}
}
Pair p;
p.name =s;
p.val =0;
pairs.push_back(p);
return pairs[pairs.size()-1].val;
}
int main()
{
string buf;
while(cin>>buf&&buf!="#") value(buf)++;//因为返回值是个引用可以作为左值,因此这里可以用++
for(vector<Pair>::const_iterator p=pairs.begin(); p!=pairs.end(); ++p)
cout<<p->name<<":"<<p->val<<'\n';
return 0;
}
double&
value(buf)++;