0
点赞
收藏
分享

微信扫一扫

c++~第12课-----STL初识

萍儿的小确幸 2022-02-11 阅读 109

算法:问题之解法也

算法分为质变算法非质变算法

质变算法:是指运算过程中会更改区间内的元素的内容,例如拷贝,替换,删除等。

非质变算法:是指运算过程中不会更改区间内的元素的内容,例如查找,计数,遍历,寻找极值等。

迭代器:容器和算法之间的胶合剂

提供一种方法,便之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。

每个容器都有自己专属的迭代器

迭代器使用非常类似于指针,初学阶段我们可以先理解迭代器为指针

Array(定长数组) 

头文件:<array>

array里面大概是这样:

template<class T,size_t size>
class MyArray
{
public:
MyArray()
{
memory = new T[size];
}
~MyArray()
{
delete[] memory;
}

protected:
T* memory;
public:
T* begin()
{
return memory+0;//第一个元素
}
T* end()
{
return memory+size;//最后一个位置
}
//类中类
//类的对象模仿指针的行为
class iterator
{
public:
iterator(T* pMove=nullptr):pMove(pMove){}
void operator=(T* pMove)//重载=
{
this->pMove=pMove;
}
bool operator!=(T* pMove)//重载!=
{
return this->pMove!=pMove;
}
iterator operator++(int)//重载++
{
this->pMove++;
return *this
}
T operator*()//重载*
{
return pMove[0];
}
protected:
T* pMove;
}
};

void test()
{
MyArray<int, 3>arr1;
for(int i=0;i<3;i++)
{
arr1[i]=i;
}
MyArray<int,3>::iterator iter;
for(iter=arr1.begin();iter!=arr1.end();iter++)
{
cout<<*iter;
}
cout<<endl;
}

举报

相关推荐

0 条评论