我试试 [#2874845@0 -ROLIA.NET 相约加拿大网上社区 之 枫下论坛 & 枫下部落, 枫下论坛主坛 ]
我试试
by
baalinca
(scarb)
at
2006.3.30 19:49
(#2874845@0)
大概就是一个vector类
类里有成员变量:
pNode; // 指向vector块的第一个元素
capacity;//最多能容纳多少元素1based
count; //实际多少元素1based
有这么一个成员函数
xxxx(index)
{
return pNode+index-1;
}
你要的那些个功能里面有好些个,只要调这个函数就能实现了
比如
at(index) 直接调xxxx(index)
operator[下标]直接调xxxx(下标+1)
back()直接调xxxx(count)
front()直接调xxxx(1)
max_size/capacity/size直接返回成员变量的值就可以了
push_back就是给xxxx(count)元素赋值;count++;
pop_back就是count--
swap(index1,index2)就是交换xxxx(index1)和xxxx(index2)返回的2元素的值。
insert(index)麻烦一点,memcpy(xxxx(index), xxxx(Index+1), sizeof(pNode) * (count-index)); pNode[index]赋值;count++;
那些iterator函数只要添一个成员变量就可以了
再加上一些下标溢出检查什么的
大概就这样吧