C++primer读书笔记(一)

本文介绍了C++中的指针与引用的区别及应用场景,演示了文件的输入输出操作,并详细讲解了几种容器的特性和使用方法。

一、指针与引用

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

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

二、输入输出到文件

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

#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对象。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值