每日接触概念不清知识点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;
}