一、指针与引用
指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。
二、输入输出到文件
一段简单的代码,应该通俗易懂了
#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对象。
本文介绍了C++中的指针与引用的区别及应用场景,演示了文件的输入输出操作,并详细讲解了几种容器的特性和使用方法。
4037

被折叠的 条评论
为什么被折叠?



