我有一个visual c++程序出了错误,不知为什么会出错?

u013582748 2017-03-23 03:03:54
我有以下小的visual c++程序:
#include <iostream>
#include <string>
using namespace std;
#include "list"
#include "algorithm"

class person
{
public:
char *name;
int age;
public:
person()
{
}

person(char *name,int age)
{
this->name=name;
this->age=age;
}

printinfo()
{
cout << "name=" << this->name <<",age=" << this->age << endl;
}


};



void main()
{
person p1("lili",25),p2("wuwu",23),p3("xiaoxiao",22),p4("bigbig",26),p5("xiaowu",22);

person *tp1,*tp2,*tp3,*tp4,*tp5,*tp6,*tp7,*tp8;
tp1=&p1;
tp2=&p2;
tp3=&p3;
tp4=&p4;
tp5=&p5;
list<person *> v2;
v2.push_back(tp1);
v2.push_back(tp2);
v2.push_back(tp3);
v2.push_back(tp4);
v2.push_back(tp5);
person p6("bigwu",28),p7("bigli",27),p8("xiaoli",20);
tp6=&p6;
tp7=&p7;
v2.push_back(tp6);
v2.push_back(tp7);
list<person *>::iterator lv2=v2.begin();
lv2++;
lv2++;
lv2++;
v2.insert(lv2,tp8);
for(list<person *>::iterator it=v2.begin();it!=v2.end();++it)
{
(*it)->printinfo();
}
}
运行时出错了,但我把v2.insert(lv2,tp8);这句话前面加了//以后,就不会出错了,便我需要在第三个位置上插入tp8这个元素就没有实现了,请各位高手指教!
...全文
252 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u013582748 2017-03-25
  • 打赏
  • 举报
回复
朋友,你的tp8是一个野指针,能不错吗?说的很好,我一时没有留意,我把程序改成以下就没有错误了: #include <iostream> #include <string> using namespace std; #include "vector" #include "deque" #include "stack" #include "queue" #include "list" #include "algorithm" class person { public: char *name; int age; public: person() { } person(char *name,int age) { this->name=name; this->age=age; } printinfo() { cout << "name=" << this->name <<",age=" << this->age << endl; } }; void main() { person p1("lili",25),p2("wuwu",23),p3("xiaoxiao",22),p4("bigbig",26),p5("xiaowu",22); person *tp1,*tp2,*tp3,*tp4,*tp5,*tp6,*tp7,*tp8; tp1=&p1; tp2=&p2; tp3=&p3; tp4=&p4; tp5=&p5; list<person *> v2; v2.push_back(tp1); v2.push_back(tp2); v2.push_back(tp3); v2.push_back(tp4); v2.push_back(tp5); person p6("bigwu",28),p7("bigli",27),p8("xiaoli",20); tp6=&p6; tp7=&p7; tp8=&p8; v2.push_back(tp6); v2.push_back(tp7); list<person *>::iterator lv=v2.begin(); lv++; list<person *>::iterator lv2=v2.begin(); lv2++; lv2++; lv2++; //v2.erase(lv,lv2); v2.insert(lv2,tp8); for(list<person *>::iterator it=v2.begin();it!=v2.end();++it) { (*it)->printinfo(); } }
qc437700093 2017-03-24
  • 打赏
  • 举报
回复
朋友,你的tp8是一个野指针,能不错吗?
sssolinjie 2017-03-24
  • 打赏
  • 举报
回复
.... #include <list> ; ""慢得多。 要删年龄22的,可以在迭代器中判断。 不用创建对象,再去指它。 为什么不直接new呢
u013582748 2017-03-23
  • 打赏
  • 举报
回复
我现在还有一个需求:以上的程序怎样把所有peoson所有的age为22的删除掉

64,651

社区成员

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

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