0
点赞
收藏
分享

微信扫一扫

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

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

算法:问题之解法也

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

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

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

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

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

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

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

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 条评论