CGrowableArray解析 _ DXUT容器
CGrowableArray的声明 in DXUTmisc.h
//--------------------------------------------------------------------------------------
// A growable array .
//--------------------------------------------------------------------------------------
template<typename TYPE> class CGrowableArray
{
public:
CGrowableArray()
{
m_pData = NULL; m_nSize = ; m_nMaxSize = ;
}
CGrowableArray( const CGrowableArray <TYPE>& a )
{
for( int i = ; i < a.m_nSize; i++ ) Add( a.m_pData[i] );
}
~CGrowableArray()
{
RemoveAll();
} const TYPE& operator[]( int nIndex ) const
{
return GetAt( nIndex );
}
TYPE& operator[]( int nIndex )
{
return GetAt( nIndex );
} CGrowableArray& operator=( const CGrowableArray <TYPE>& a )
{
if( this == &a ) return *this; RemoveAll(); for( int i = ; i < a.m_nSize;
i++ ) Add( a.m_pData[i] ); return *this;
} HRESULT SetSize( int nNewMaxSize );
HRESULT Add( const TYPE& value );
HRESULT Insert( int nIndex, const TYPE& value );
HRESULT SetAt( int nIndex, const TYPE& value );
TYPE& GetAt( int nIndex ) const
{
assert( nIndex >= && nIndex < m_nSize ); return m_pData[nIndex];
}
int GetSize() const
{
return m_nSize;
}
TYPE* GetData()
{
return m_pData;
}
bool Contains( const TYPE& value )
{
return ( - != IndexOf( value ) );
} int IndexOf( const TYPE& value )
{
return ( m_nSize > ) ? IndexOf( value, , m_nSize ) : -;
}
int IndexOf( const TYPE& value, int iStart )
{
return IndexOf( value, iStart, m_nSize - iStart );
}
int IndexOf( const TYPE& value, int nIndex, int nNumElements ); int LastIndexOf( const TYPE& value )
{
return ( m_nSize > ) ? LastIndexOf( value, m_nSize - , m_nSize ) : -;
}
int LastIndexOf( const TYPE& value, int nIndex )
{
return LastIndexOf( value, nIndex, nIndex + );
}
int LastIndexOf( const TYPE& value, int nIndex, int nNumElements ); HRESULT Remove( int nIndex );
void RemoveAll()
{
SetSize( );
}
void Reset()
{
m_nSize = ;
} protected:
TYPE* m_pData; // the actual array of data
int m_nSize; // # of elements (upperBound - 1)
int m_nMaxSize; // max allocated HRESULT SetSizeInternal( int nNewMaxSize ); // This version doesn't call ctor or dtor.
};
CGrowableArray解析 _ DXUT容器的更多相关文章
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- cb16a_c++_顺序容器的选用_排序_二分查找
/*cb16a_c++_顺序容器的选用_排序_二分查找顺序容器: 1.vector的优点与缺点 vector优点:排序利用下标,快速排序,做二分查找非常快 2.list的优点与缺点 list优点:插入 ...
- cb14a_c++_顺序容器的操作7_赋值与交换(swap)_vector转list
cb14a_c++_顺序容器的操作7_赋值与交换(swap) vector数据赋值给list, slist.assign(svec.begin(), svec.end());//这样可以转 svec- ...
- ca13a_c++_顺序容器的操作6删除元素
/*ca13a_c++_顺序容器的操作6删除元素c.erase(p) //删除迭代器p指向的位置c.erase(b,e) //删除b to e之间的数据,迭代器b包括,e不包括c.clear()//删 ...
- cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size
cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...
- cb10a_c++_顺序容器的操作3关系运算符
cb10a_c++_cb09a_c++_顺序容器的操作3 2 顺序容器的操作3 3 关系运算符 4 所有的容器类型都可以使用 5 比较的容器必须具有相同的容器类型,double不能与int作比较 6 ...
- cb09a_c++_顺序容器的操作2-在顺序容器中添加元素_插入数据
cb09a_c++_顺序容器的操作2在顺序容器中添加元素vector不能向前插入数据,list可以用insertc.push_back(t);c.push_front(t);c.insert(p,t) ...
- cb08a_c++_顺序容器的操作1
cb08a_c++_顺序容器的操作1容器定义的类型别名begin(闭区间)和end(开区间)成员{first,last)左闭右开,左包括,右不包括,end()指向最后一个的下一个. /*cb08a_c ...
- cb06a_c++_顺序容器的定义
/*cb06a_c++_顺序容器的定义顺序容器:vector,数组,尾端操作数据,快速随机访问list 链表,快速插入数据deque数组,双端-首尾操作数据,方便两端的数据访问 顺序容器适配器:sta ...
随机推荐
- overridePendingTransition简介
1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时 ...
- BZOJ 3771: Triple
Description 问所有三/二/一元组可能形成的组合. Sol FFT. 利用生成函数直接FFT一下,然后就是计算,计算的时候简单的容斥一下. 任意三个-3*两个相同的+2*全部相同的+任意两个 ...
- CentOS 7 Git安装
Git安装 yum -y install git 安装后,在srv目录下建立Git的目录. 初始化一个git空仓库 git init --bare project.git 增加用于访问git仓库的用户 ...
- 【spoj705】 Distinct Substrings
[题目描述] 给定一个字符串,计算其不同的子串个数. [输入格式] 一行一个仅包含大写字母的字符串,长度<=50000 [输出格式] 一行一个正整数,即不同的子串个数. [样例输入] ABABA ...
- 爬虫 htmlUnit遇到Cannot locate declared field class org.apache.http.impl.client.HttpClientBuilder.dnsResolve错误
当在使用htmlUnit时遇到无法定位org.apache.http.impl.client.HttpClientBuilder.dnsResolver类时,此时所需要的依赖包为: <depen ...
- rocketmq生产者部署的机器注意事项
报错: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'warningP ...
- (一)Netty源码学习笔记之概念解读
尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6121065.html 博主最近在做网络相关的项目,因此有契机学习netty,先 ...
- [Sass]混合宏的参数
[Sass]混合宏的参数--传一个不带值的参数 Sass 的混合宏有一个强大的功能,可以传参,那么在 Sass 中传参主要有以下几种情形: A) 传一个不带值的参数 在混合宏中,可以传一个不带任何值的 ...
- Android-RelativeLayout(相对布局)
1.RelativeLayout(相对布局) 2.margin针对的是容器中的组件,而padding针对的是组件中的元素
- ios语音识别
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000; min-height: 15.0px } p.p ...