C++ Primer读书笔记1--基本语言

来源:互联网 发布:linux 不支持ext4 编辑:程序博客网 时间:2024/04/30 08:47

一、变量和基本类型 

const 常数限定符

  • const 在定义时必须进行初始化,并且一旦初始化后,其值不能进行修改;
  • 默认情况下全局域的const变量只能在本文件使用,无法被外部文件访问;若需被整个程序访问,需定义时指定const变量为extern。
    <pre name="code" class="cpp">//file_1.cc//define and init a const that is accessible to other filesextern const int BufSize = 512;//file_2.ccextern const int BufSize;     //use BufSize in file_1.cc

引用

  • 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
  • 引用的声明方法:类型标识符 &引用名=目标变量名;

  【例1】:int ival; int &refVal=ival;        //定义引用refVal,它是变量ival的引用,即别名

  说明:

  (1)&在此不是求地址运算,而是起标识作用。

  (2)类型标识符是指目标变量的类型。

  (3)声明引用时,必须同时对其进行初始化。

  (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

  (5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,对引用求地址,就是对目标变量求地址。&refVal与&ival相等。

  • const 的引用可以绑定到不同类型变量或者常数,如:int i = 1; const int &ra = 42; const &rb = ra + i;

枚举enum

  • enum modes {input, output, append};      默认第一个枚举元素赋值是0,后面元素比前面大1.
  • enum Forms {shape = 1; sphere, cylinder, polygon};      第一个元素显式赋值,后面元素依次+1, sphere = 2; cylinder = 3。
struct & class
  • 唯一区别在于默认访问级别不同,struct默认为public,class默认为private。

二、标准数据库

命名空间using声明

    使用using声明后可以不加前缀情况下使用命名空间中名字,格式如下:
        using namespace::name
常用声明如下:
        using std::cin; using std::cout; using std::string;  using std::endl; using std::vector;

标准库string类型

  • 初始化: string s;  默认构造函数,s为空字符串        string s2(“value”);    初始化为“value” 。
  • 读写: cin >> s     1. 读取并忽略开头所有空白字符(‘ ’, ‘\t’, '\n');   2.再次遇到空白字符,结束一次读取。

标准库vector类型

  • 容器vector中所有对象必须是同一类型的;
  • vector<T> v;      vector保存类型为T的对象,默认构造函数v为空;vector<string>  ivec(10);    10个元素,均初始化为0。
        while(cin >> words){ivec.push_back(words);      //像vector后面添加元素}for(std::vector<string>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)    //迭代器iterator{tmp = *iter;for(string::size_type j = 0; j != tmp.size(); ++j){tmp[j] = tolower(tmp[j]);}*iter = tmp;

迭代器iterator用于检查容器内元素并遍历元素的数据类型

  •  std::vector<string>::iterator iter = ivec.begin()     //返回迭代器指向的第一个元素;  ivec.end()     //返回迭代器指向的末端元素的下一个;
  • const_iterator只能用于读取容器内元素,不能改变其值;
  • 任何改变vector长度的操作都会使已存在的迭代器失效。




0 0