Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300026
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

分类: C/C++

2008-07-05 23:10:30

c++比c牛x的地方之一就是有了STL,里面有了很多好用的东西,初看一下STL容器。
上代码:

#include
#include
using namespace std;
int i;

int main(void) {
    vector ivec(5,5);

    for(int j=0;j<5;j++)
    cout<<"address of vector: "<<&ivec[j]<
    cout<
    ivec.push_back(6);
    for(int j=0;j<6;j++)
        cout<<"address of vector: "<<&ivec[j]<
    cout<<"address of static area: "<<&i<
    int *p=new (int);
    cout<<"address of heap area: "<
    int k=0;
    cout<<"address of stack area: "<<&k<    return EXIT_SUCCESS;
}
再看一下输出结果:
address of vector: 0x3d24d0
address of vector: 0x3d24d4
address of vector: 0x3d24d8
address of vector: 0x3d24dc
address of vector: 0x3d24e0
5
address of vector: 0x3d26b0
address of vector: 0x3d26b4
address of vector: 0x3d26b8
address of vector: 0x3d26bc
address of vector: 0x3d26c0
address of vector: 0x3d26c4

address of static area: 0x436000
address of heap   area: 0x3d2470
address of stack  area: 0x22ff10

程序第四行定义的变量i,很明显main之外的全局变量,静态存储。
第20行的指针p申请了一个int大小的内存空间,new出来的存储在堆区。(这里忘了delete p,一定要注意)。
第23行的k,存储在栈区,
可以清楚的看到STL容器是存储在堆区的,这样方便进行push_back,insert等元素加入操作。

次小程序没做到但绝对要注意的地方:
1.new出来的东西一定要delete掉,一定一定(如果new出来的数组,用delete [] p)
2.STL容器(container)中的元素应使用迭代器(iterator)访问,而不是像C中数组(array)一样用下标(subscript),因为有的容器不支持下标,如list,养成好习惯啊。

阅读(675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~