实现Vector的代码....

上善若水邻 2011-02-19 09:25:51
4)请编写一个类似vector向量的数据结构。要求实现msdn上面一下成员函数:
Assign/at/back/begin/capacity/clear/empty/end/erase/front/insert/max_size/pop_back/push_back/rbegin/rend/resize/reserve/size/swap

这是我在笔试时遇到的,我没有全部实现,而且我还抄了STL源码剖析中的代码..
现在我想全部实现它,但是空间配置器很麻烦,STL源码剖析书中的代码我抄过来后,发现在VS中报错,
以前看到有人说他实现过一个,但是现在找不到了,谁提供一下?谢谢!
[code=C]
#include"head.h"
namespace MyVector
{
template<typename T>
class Vector
{
public:
// vector 的嵌套类型定义
typedef T value_type;
typedef value_type* pointer;
typedef value_type* iterator;
typedef value_type *const const_iterator;
typedef value_type& reference;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
protected:
size_type length; //表示目前已用空间大小。
iterator start; //表示目前使用空间的头
iterator finish; //表示目前使用空间的尾
iterator end_of_storage; //表示目前可用空间的尾
public:
//Vector():size(0),start(0),finish(0),end_of_storage(0){}
Vector(const_iterator Beg, const_iterator End)
{
//不考虑超级大的数组。
length = End - Beg;
start = new value_type[length*2+1]();
end_of_storage = start+length*2;

for(size_type i=0; i<length ;i++)
{
start[i] = Beg[i];
}
finish = start+length;
}
~Vector(){ clear(); }
private: //不想写了,所以禁止了复制和赋值。
Vector(const Vector&);
Vector& operator =(const Vector&);
public:
void clear()
{
if(start)
{
delete []start;
start = NULL;
finish = NULL;
end_of_storage =NULL;
}
}
iterator begin() const { return start; }
iterator end() const { return finish; }
reference front() const { return *begin(); }
reference back() const { return *(end()-1);}
size_type size() const {return size_type(end()-begin());}
size_type capacity() const
{
return size_type(end_of_storage - begin());
}
bool empty() const {return begin() == end();}
reference operator [](size_type n)
{
if(n>length)
return back();
else
return *(begin() + n);
}
reference at(size_type i)const
{
if(i>length)
throw "error";
return *(begin()+i);
}
void push_back(const T &rt)
{
if(finish != end_of_storage)
{
*finish = rt;
++finish;
++length;
}
else
{
iterator temp = new value_type[length*2]();
for(size_type i=0; i<length; i++)
{
temp[i] = start[i];
}
delete []start;
start = temp;
start[length] =rt;
++length;
finish = start+length;
end_of_storage = start+length*2;

}


}
void pop_back()
{
--finish;
--length;
}

};
}
[/code]
呵呵...不知道我上一贴为什么被锁定?
...全文
263 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a707000646 2011-02-19
  • 打赏
  • 举报
回复
楼上的犀利哥
马上就解决了
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧