C++ stl list

#include<iostream>#include<fstream>#include<string>#include<list>structpeople{stringn... #include <iostream>
#include <fstream>
#include <string>
#include <list>
struct people
{
string name;
int id;
static list<people> pl;
};
int main ()
{
people a;
a.name="li";a.id=1;
people b;
b.name="zhang";b.id=2;
people::pl.push_back(a);
people::pl.push_back(b);

for(list<people>::iterator it = people::pl.begin(); it!=people::pl.end();it++)
cout<<it->name<<' '<<it->id<<endl;
return 0;
}
这样定义list 为什么编译器报错呢
展开
 我来答
相思丶猫2C
2014-08-29 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:959万
展开全部
struct people
{
string name;
int id;
};

static list<people> pl; 不要放在类中,类还没完整定义,不可以使用,但是可以这样
list<people*> pl;

int main ()
{
people a;
a.name="li";a.id=1;
people b;
b.name="zhang";b.id=2;
people::pl.push_back(a);
people::pl.push_back(b);

for(auto it = people::pl.begin(); it!=people::pl.end();it++)
cout<<it->name<<' '<<it->id<<endl;
return 0;
}
用auto可以使代码更简洁

如果使用vs2013,还可以更简洁
for(auto &i : pl) { }
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小宇宙_4hy
2014-08-29 · 超过86用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:162万
展开全部
你好,你的问题仅仅是很简单的没有命名空间前缀,"std::", 简单将你列出的第2行,改成“std::list<int> Backpack;”就行了。

头文件里定义的标识符是“std::list”,而不是“list”,后者不是模板类的定义,所以不能和尖括号连用,报第一个错C2143。同时当假定list是一个变量后,发现前面没类型定义,就报告了第2个错C4430。 我的编译器vs2013不会报告你的第3个错。

在cpp文件里,你可以在所有#include之后,加入一行“using namespace std;”,来避免重复输入"std::"前缀; 如果你全cpp只用<list>,也可以只输入“using std::list;”
以上回答你满意么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky
2014-08-29 · 知道合伙人互联网行家
sky
知道合伙人互联网行家
采纳数:2 获赞数:1
PMP,资深工程师,研发经理

向TA提问 私信TA
展开全部
#include <iostream>
#include <fstream>
#include <string>
#include <list>
using namespace std;
struct people
{
string name;
int id;
};
list<people> pl;
int main()
{
people a;
a.name = "li"; a.id = 1;
people b;
b.name = "zhang"; b.id = 2;
pl.push_back(a);
pl.push_back(b);

for (list<people>::iterator it = pl.begin(); it != pl.end(); it++)
cout << it->name << ' ' << it->id << endl;
return 0;
}
list<people> pl 定义在 people 外面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式