每日接触概念不清知识点2018.8.22

每日接触概念不清知识点2018.8.22

浅拷贝和深拷贝

浅拷贝:如果复制的对象中引用了一个外部内容(例如分配在堆上的数据),那么在复制这个对象的时候,让新旧两个对象指向同一个外部内容,就是浅拷贝。(指针虽然复制了,但所指向的空间内容并没有复制,而是由两个对象共用,两个对象不独立,删除空间存在)

深拷贝:如果在复制这个对象的时候为新对象制作了外部对象的独立复制,就是深拷贝。

迭代器使用

迭代器是一个类,它实现于容器模板中。

            它的对象是一个指向容器中的一个元素,它实现的*运算符,给人的感觉它好像是个指针。

            从容器中获取到迭代器是一个半开半闭区间[start,end)

容器::iterator iter;

for(iter= 容器.begin();iter!=容器.end();iter++)

{

cout<<*iter或者是 iter->first等等之类的

}

vector

#include <iostream>

#include <vector>

 

intmain()

{

    std::vector<char> charVector;

 

    intx;

    for(x=0; x<10; ++x)

        charVector.push_back(65 + x);

 

    intsize = charVector.size();

    for(x=0; x<size; ++x)

    {

        std::vector<char>::iterator start =

            charVector.begin();

        charVector.erase(start);

        std::vector<char>::iterator iter;

        for(iter = charVector.begin();

                iter != charVector.end(); iter++)

        {

            std::cout << *iter;

        }

        std::cout << std::endl;

    }

 

    return0;

}

 

map容器

它底层以采用的是红黑树(有序+平衡)进行存储的。

            一个键值(主键)只能对应一个值。

测试代码

#include <iostream>

#include <map>

using namespace std;

 

int main()

{

            map<int,const char*> m;

            m.insert(make_pair(1,"hehe1"));

            m.insert(make_pair(2,"hehe2"));

            m.insert(make_pair(3,"hehe3"));

            map<int,const char*>::iterator it = m.find(2);

            cout << it->first << " " << it->second << endl;

           

}

原文地址:https://www.cnblogs.com/gzk1171848896/p/9520392.html