C++primer读书笔记(一)

来源:互联网 发布:精灵软件下载 编辑:程序博客网 时间:2024/04/28 03:26

一、指针与引用

指针与引用看上去完全不同(指针用操作符’*’’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?

  首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

二、输入输出到文件

一段简单的代码,应该通俗易懂了

#include<iostream>#include<fstream>#include<string>using namespace std;int main(){    ofstream outfile;//创建一个ofstream对象来管理输出流    string wj;//文件名    cout<<"请输入文件名:";    cin>>wj;        outfile.open(wj.c_str());//打开它,若没有便创建        if(!outfile)//验证是否打开成功    {        cerr<<"打开失败!"<<endl;        return -1;    }    cout<<"请输入要写入文件的内容:"<<endl;    cin>>wj;    outfile<<wj;    outfile.close();    cout<<"请输入要打开文件的名称:"<<endl;    cin>>wj;    ifstream fin;//创建了一个ifstream的输入流    fin.open(wj.c_str());//打开它    if(!fin)//验证是否打开成功    {        cerr<<"打开失败!"<<endl;        return -1;    }    cout<<"打印出来的内容:"<<endl;    char ch;    while(fin.get(ch))        cout<<ch;    cout<<endl;    fin.close();//关闭输入流    return 0;}
文件的打开模式:

out   打开文件做写的操作,删除文件中已经有的东西

in     打开文件做读的操作

一些组合:

out | app     打开文件做写的操作,在文件的尾写入

out | trunc  与out模式相投

in | out       打开文件做读、写的操作,并定位与文件的开头处

in | out | trunc    打开文件做读、写操作,删除文件中已经有的数据


三、容器

容器容纳特定类型对象的集合。

1、顺序容器

三种顺序容器,vector(支持快速随机访问),list(支持快速插入/删除),deque(双端队列)

三种顺序容器适配器,stack(后进先出栈),queue(先进先出队列),priority_queue(有优先级管理的队列)

vector容器的自增长,其中两个成员函数,capacity 函数获取在容器当前的容量  ,  reserve是告诉容器应该预留多少个存储空间。

然后关于容器适配器的话:

stack,后进先出的一个栈,他可以适用于以上三种顺序容器

queue,先进先出的队列,只能建立在list容器上

priority_queue ,有优先级的队列,要求提供随机访问的功能,于是也只能适用于 vector 和 deque 的容器上


2、关联容器

关联容器,通过键值(key)来存储和读取元素,而不是顺序容器中用位置俩读取元素

两种关联的类型,map,set

map: 键-值对应的形式,键只是在map中的索引,是一个关联数组

重要的类型:

map(k,v)::key_type      用作索引的键的类型

map(k,v)::mapped_type  键所关联的值的类型

map(k,v)::value_type       一个pair类型(表类型)


set:  仅仅包含一个键

     

     multimap(不支持下表操作了) 与 multiset 两个类型,允许一个键值对应多个实例!

lower——bound(k)函数,返回一个迭代器,指向键值不小于K的第一个元素

upper_bound(k)函数,返回一个迭代器,指向键值大于K的第一个元素

equal_range(k)函数,返回存储在一对迭代器的pair对象。