Visual C++ POSITION用法解释,POSITION是什么?

转载 2015年07月10日 13:26:28

POSITION是MFC模板类库中经常使用的一个数据类型,我们从它的定义可以看出,其实,它就是一个指针。

// abstract iteration position

struct __POSITION { };

typedef __POSITION* POSITION;

MFC给出的注释是:一个抽象的迭代位置,既然是抽象,也就是没有给定具体的数据类型,以满足不同的模板参数的需要。

在CList中,经常会用到POSITION作为引用参数,或者作为返回值。下面,我们就举2个简单的例子,来帮助大家理解这个数据类型,不过在此之前,我要啰嗦一下,因为有很多人对__POSITION这个空结构体,表示怀疑,似乎这成为了他们理解的障碍。既然是一个空的结构体,怎么能用它来定义指针呢?

其实,C++编译器,不会将一个空的结构体完全看成是空的,编译器会为它分配1byte的内存,其实说白了__POSITION这个结构体,就相当于一个unsigned char的类型,所以__POSITION也就相当于是unsigned char,也就是Windows里面的BYTE类型,从而POSITION也就有了一个可以等价的形式,那就是BYTE*。

我们举CList中2个典型的成员函数作为讲解的重点,当然,大家应该知道CList是一个链表数据结构。下面看这两个函数:

1. POSITION GetHeadPosition() const;

显而易见,这个函数,是用来获取链表头的,它的返回值是一个POSITION,其实也就是一个指针。这个指针代表了谁?当然,就是你一直想要的链表头在链表中的指针,这个指针是new出来的,你绝对不能擅自的将这个指针delete掉。

2. TYPE& GetAt(POSITION position);

这个函数,看起来,比较怪。它的唯一的入参是一个指针,其实,有可能就是你刚刚用GetHeadPosition获得的头节点指针。这个函数的意思,也就是,需要你提供一个节点的地址,然后,CList会遍历整条链,去寻找并返回符合这个地址的节点数据。

废话了那么多,一言以蔽之,毕其功于一役,换句话说就是:

POSITION,你可以把它看成是一个学号,有了它,你就可以找到任何一个你朝思暮想的小美眉了。

相关文章推荐

CList成员的使用

使用时 要 #include   Construction CList Constructs an empty ordered list. 建立一个链表 example...

POSITION用法解释

POSITION是MFC模板类库中经常使用的一个数据类型,我们从它的定义可以看出,其实,它就是一个指针。 // abstract iteration position struct __POSIT...
  • L_Andy
  • L_Andy
  • 2013-12-23 18:55
  • 6146

该如何正确的使用position属性它的作用是什么?

Position的英文原意是指位置、职位、状态。也有安置的意思。在CSS布局中,Position发挥着非常重要的作用,很多容器的定位是用Position来完成。   Position属性有四个可...

直接写position:absolute,后面不加top和left等值,是什么意思?分两种情况

用Div+CSS进行网站布局时,做一些浮动层等特殊特殊效果时要考虑到定位问题。 这就要用到Position属性等。 Position属性有四个值:static、fixed、absolute...

css关于position属性的用法(绝对定位和相对定位的混淆)

挺久没用,有点忘了关于position这个属性的用法,导致在练手的时候又犯了跟最开始新手才会犯的错误,那就是absolute和relative的用法。 在此首先看一下官方对这两个属性值的解释: ...

background-position 用法详细介绍

转载自:http://www.cnblogs.com/huazaizai/archive/2010/11/03/1867907.html 语法:  background-position : ...

background-position 用法详细介绍

语法: background-position : length || length background-position : position || position 取值: le...

background-position 用法详细介绍

background-position : length || length background-position : position || position 取值: length  :...

background-position 用法详细介绍

语法:  background-position : length || length  background-position : position || position  取值:  le...

background-position 用法详细介绍

语法: background-position : length || length background-position : position || position 取值: length...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)