VS2010中的vector

饭fan有引力 2010-10-13 08:36:49
我从昨晚写代码时,每次用vector来作为动态数组时,每次在运行时,都会弹出一个窗口说Debug assertion failed,不知道是什么原因,会不会是我使用vector的时候出现了什么错误,求解中
#include <iostream>
#include <string>
#include <vector>
using namespace std;

void frequency(string s)
{
vector<char> a; //记录字符串中有多少不同的字符
vector<int> num; //记录每种字符出现的个数
int j = 0;
int k = 0; //返回不同字符数

if(!a.empty() || !num.empty())
cout << "Initialize is failed!" << endl;
else
{
if(s.length()==0)
{
cout << "My god! This is an empty string!" << endl;
}
else
{
//统计字符
for(int i=0; i<s.length(); i++)
{
while(j<k && a[j]!=s[i])
j++;
if(j == k)
{
a[k] = s[i];
num[k]++;
k++;
}
else
num[j]++;
}

//输出结果
for(int i=0; i<k; i++)
{
cout << a[i] << '\t' << num[i] << endl;
}
}
}
}
void main()
{
cout << "Input a string for the calculation:";
string str;
getline(cin, str);
frequency(str);
system("pause");
}
...全文
543 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanyun110119 2010-10-13
  • 打赏
  • 举报
回复
你的a和num里面一直都没有元素啊,直接用下标操作导致越界了,应该先用push_back()将你的string的值放到vector<char> a中再进行你的统计字符的操作。
xy_zhang 2010-10-13
  • 打赏
  • 举报
回复
你的a和num一直都是空的,当加入新元素时需要push_back。
xiaohuh421 2010-10-13
  • 打赏
  • 举报
回复
list,vector这些类库是比较"脆"的,一有非法操作就会崩溃.说脆,并不是说不好,这些库是非常强大,非常严紧的,只是因为严紧,所以就容不得乱来.

所以如楼上所说,你一但对那个vector有非常操作,就会崩溃了.
蒋晟 2010-10-13
  • 打赏
  • 举报
回复
numd的元素访问越界

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧