首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么将string中字符装进vector容器中

2012-07-28 
求助:如何将string中字符装进vector容器中?s中存着一串字符串,想把它每个字母拆出来,加上它出现的次数,构

求助:如何将string中字符装进vector容器中?
s中存着一串字符串,想把它每个字母拆出来,加上它出现的次数,构成一个结点node,放进vec容器,可以通过编译,但是无法运行。麻烦各位帮忙看下,十分感谢!
struct node
{
string ch;
int weight;
node():ch('\0'),weight(0){}
};[code=C/C++][/code][code=C/C++][/code]

void change(string s,vector<node> &vec)
{
vector<node>::iterator j;
for(string::size_type i=0;i!=s.size();++i)
{
node temp;temp.ch=s[i];temp.weight=1;
for(j=vec.begin();j!=vec.end();)
{
if(j->ch==temp.ch)
{
temp.weight+=j->weight;j=vec.erase(j);vec.insert(j,temp);
}
else
{
++j;
if(j==vec.end()) vec.push_back(temp);
}

}
}
for(vector<node>::size_type i=0;i!=vec.size();++i)
vec[i].weight=100*vec[i].weight/s.size();
}

[解决办法]
node里面的第一个成员应该是char而不是string,改为

C/C++ code
struct node{char ch;int weight;node():ch('\0'),weight(0){}};void change(string s,vector<node> &vec){vector<node>::iterator j;for(string::size_type i=0;i!=s.size();++i){node temp;temp.ch=s[i];temp.weight=1;for(j=vec.begin();j!=vec.end();){if(j->ch==temp.ch){j->weight+=1;break;}else{++j;}if(j==vec.end())     vec.push_back(temp);}}for(vector<node>::size_type i=0;i!=vec.size();++i)vec[i].weight=100*vec[i].weight/s.size();}
[解决办法]
change函数那里错了,如果vec为空根本进不去,另外没看懂你为啥*100/size,去掉了
C/C++ code
void change(string s,vector<node>& vec){    vector<node>::iterator j;    for(string::size_type i=0;i!=s.size();++i)    {        node temp;temp.ch=s[i];temp.weight=1;        for(j=vec.begin();j!=vec.end();j++)        {            if(j->ch==temp.ch)            {                j->weight++;                break;            }        }        if(j==vec.end())             vec.push_back(temp);    }} 

热点排行