【C++】C转C++学习记录.DAY2

【C++】C转C++学习记录.DAY2,第1张

引子

第二天的学习,对day1的知识点进行补充。



1.迭代器

所有标准库容器都可以使用迭代器,它的对象是容器中的元素或string对象中的字符,有迭代器的类型同时拥有返回迭代器的成员,使用迭代器可以访问某个元素或对其进行 *** 作,迭代器和指针类似,有有效与无效之分。



其中,
begin成员返回指向容器第一个元素的迭代器;
end成员返回指向容器尾元素的下一位置的迭代器;
例如:

auto b = v.begin(), e = v.end();

b表示v的首元素,e表示v尾元素的下一位置,它们的类型与begin和end的返回值类型相同

标准容器迭代器的运算符:

运算符含义
*iter返回迭代器所指元素的引用
iter->mem解引用iter并获取该元素的名为mem的成员,等价于(*iter).mem
++iter令iter指向容器中的下一个元素
–iter令iter指向容器中的上一个元素
iter1 == iter2判断两个迭代器是否相等,如果两个迭代器指向同一元素或是同一个容器的尾后迭代器则相等
iter1 != iter2

注:凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。


vector和string提供了更多的运算符:

运算符含义
iter + n迭代器指向的位置向前移动n个位置
iter - n迭代器指向的位置向后移动n个位置
iter += n将iter加n的结果赋给iter
iter -= n将iter减n的结果赋给iter
iter1 - iter2计算两个迭代器之间的距离
>、>=、<、<=关系运算, 比较两迭代器指向元素位置的前后关系
2.输入输出

在初入C++时,会发现和C的头文件引用有了区别,我们用了#include
iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流,流的意思是字符是顺序生成或消耗的。



标准库定义了四个IO对象:

  • 输入,使用名为cin的istream类型的对象;
  • 输出,使用名为cout的ostream类型的对象;
  • 输出警告和错误信息,使用名为cerr的ostream类型的对象;
  • 输出程序运行时的一般性信息,使用名为clog的ostream类型的对象。


1.结合输出运算符<<,可以完成以下操作:

std::cout << "hello world" << std::endl;

第一个<<运算符将右侧给定的值(“hello world”)写到左侧给定的ostream对象(cout)中,下一个<<运算符又将endl写到左侧的新对象中。


其中endl是一个被称为 *** 纵符的特殊值,写入它的效果是结束当前行并将缓冲区中的内容刷到设备中。


2.结合输入运算符>>,可以完成以下 *** 作:

int v1 =0, v2 = 0;
std::cin >> v1 >> v2;

同理,>>从左侧给定的istream(cin)读入数据,并存给右侧的给定对象(v1),返回左侧的对象作为计算结果,第二个>>又重复了一遍上述 *** 作,即从cin中读入两个值,分别存入v1和v2中。


3.命名空间namespace

我们可以发现程序中使用std::cout而不是cout,因为前缀std::指出名字cout是定义在名为std的命名空间中的。


命名空间可以帮助我们避免名字定义冲突,以及使用库中相同名字导致的冲突,标准库定义的所有名字都在std中。



其中::是作用域运算符,它指出我们想使用定义在命名空间std中的名字cout。


每次都使用std::cout太过于麻烦,我们可以对命名空间进行using声明,声明后就无需前缀也能使用所需的名字了。



using声明的格式:using namespace::name;
例如,

#include
using std::cin;
using std::cout;
using std::endl;

于是,我们就可以愉快地直接使用cin, cout, endl了。


注:头文件中不应包含using声明。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/634479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-16
下一篇 2022-04-16

发表评论

登录后才能评论

评论列表(0条)

保存