求助:如何将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); }}