vector错误问题

死咸鱼的成长之路 2017-11-26 12:04:30
#include<iostream>
#include<vector>
#define MAX 10
using namespace std;
int n; //È«ÅÅÁÐ1~n
vector<int> num;
//int num[MAX];
bool visited[MAX] = {false};
int count = 0;
void dfs( int step )
{
int i;
if( step == n+1 )
{
for( int k = 1 ; k <= n ; k ++ )
cout << num[k];
cout << endl;
count ++;
return ;
}
for( i = 1 ; i <= n ; i ++ )
{
if( !visited[i] )
{
visited[i] = true;
num[step] = i;
dfs( step + 1 );
visited[i] = false;
}
}
}
int main()
{
cin >> n;
dfs(1);
cout << "count = " << count << endl;
return 0;
}


这段代码想做的就是1~n的全排列 但是在这里我用vector定义num数组的时候出错




然而改成int num[MAX]; 就能正常运行了 , 这是为什么?
...全文
245 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-28
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
xiaohuh421 2017-11-28
  • 打赏
  • 举报
回复
vector默认的构造函数, 初始化空间可能为空, 需要你push去数据, 它才有空间, 才能使用数组方式访问, 否则会抛异常.
paschen 版主 2017-11-27
  • 打赏
  • 举报
回复
vector 中 添加元素可以用push_back 而不能写成:num[step] = i; 因为在num为空的时候,你去访问里面的元素自然导致程序崩溃
  • 打赏
  • 举报
回复
引用 1 楼 qq_38204686 的回复:
没有初始化吗
应该怎么初始化
大米粥哥哥 2017-11-26
  • 打赏
  • 举报
回复
没有初始化吗
cs_chenjw 2017-11-26
  • 打赏
  • 举报
回复
vector<int> num定义的时候,num的大小为0,里面是空的,没任何元素。 你有两种解决方法 1、 通过num.resize(n),来增加容器num的大小。然后可以通过num[下标]赋值。 2、通过num.push_back()方法直接增加元素。
xskxzr 2017-11-26
  • 打赏
  • 举报
回复
vector一开始是空的,加元素要push_back。

64,642

社区成员

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

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