LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1466|回复: 7

Linux下如何使用STL?

[复制链接]
发表于 2005-10-6 18:09:19 | 显示全部楼层 |阅读模式
问个很浅的问题,在Linux下如果使用STL阿,我弄了好久都没弄成。
发表于 2005-10-6 19:08:34 | 显示全部楼层
gcc带有STL的吧?
你有没有装开发包呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-6 19:35:48 | 显示全部楼层
装了代码如下:
#include <string>
#include <list>

int main (void)
{
  list<string> Milkshakes;
  Milkshakes.push_back("c");
  Milkshakes.push_back("2");
  Milkshakes.push_front("3");
  Milkshakes.push_front("4");
}

然后g++  STLTest.cc -ott

提示错误如下:
STLTest.cc: In function `int main()':
STLTest.cc:6: error: `list' undeclared (first use this function)
STLTest.cc:6: error: (Each undeclared identifier is reported only once for each
   function it appears in.)
STLTest.cc:6: error: `string' undeclared (first use this function)
STLTest.cc:6: error: `Milkshakes' undeclared (first use this function)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-6 21:24:02 | 显示全部楼层
问题解决了,后来发现是少了引用命名空间的语句,加上using namespace std;这句就可以了,在网上搜了搜,发现有说gcc>2.8的版本好像都需要这一引用的.
回复 支持 反对

使用道具 举报

发表于 2005-10-6 21:24:12 | 显示全部楼层
名字空间没有指定啊。
回复 支持 反对

使用道具 举报

发表于 2005-10-8 12:31:17 | 显示全部楼层
Post by flowing
问题解决了,后来发现是少了引用命名空间的语句,加上using namespace std;这句就可以了,在网上搜了搜,发现有说gcc>2.8的版本好像都需要这一引用的.


那是不是说gcc<=2.8就可以不用控制名空间了呢? 你是不是搞错了?
回复 支持 反对

使用道具 举报

发表于 2005-10-8 17:53:51 | 显示全部楼层
Post by rickxbx
那是不是说gcc<=2.8就可以不用控制名空间了呢? 你是不是搞错了?

很有可能,gcc<=2.8的时候C++还没标准化,头文件可能还带.h呢,因此可能所有的STL都在全域,而不在命名空间std里(可能连命名空间都还没有)。
回复 支持 反对

使用道具 举报

发表于 2005-12-17 22:42:10 | 显示全部楼层

刚通过rhce,开始学习linux下的c++,请多关照

我用的是rhel4,gcc-c++-3.4.4-2,是SGI STL

非标准的部分放在了ext子目录下,/usr/include/c++/3.4.3/ext,或
/usr/include/c++/3.4.4/ext
头函数的写法就象这样:
#include <ext/ropeimpl.h>
#include <ext/slist>
#include <ext/memory>
#include <ext/pod_char_traits.h>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表