C++ primer学习笔记(二)

charpter 3

  • using namespace::name
    例如 using std::cin ; //引入命名空间的某个成员
    using namespace std ;//引入命名空间std

    string 标准库

    #include string
    using namespace std;
  • string 初始化
    string s1(n,’c’) 将s1初始化为连续n个字符c组成
    string a(“hello”)
  • string 的基本操作 string s;
    输入 cin>>s //忽略开头的空白 直到遇到下一处空白停止
    读取一行 geline(cin, s) //保留空白 ,遇到换行符停止
    empty 是否为空
    size 返回长度不包含’/0’s.size() = strlen(s.c_str())
    **注意size返回为无符号的整数
  • string 加法
    两侧必须有一个string 例如"hello"+"dd"不合法
  • string 字符的比较
    isalnum() isalpha() 头文件cctype或者ctype.h http://book.2cto.com/201309/32066.html
  • 对string 对象每个字符操作
    for(declaration : expression)
    statement

for(auto c : str)
cout<<c<<endl; 

vector 标准库

  • 头文件:include vector
    vector<T> v1
    vector<T> v2(n,val)
  • 列表初始化vector 对象
    vector<T> v3{"d","b","c"} 生成了三个对象
    **花括号表示列表初始化,圆括号表示构造对象
  • #####vector中添加元素
    push_back()在尾部添加元素
  • 其他操作与string类型相似

###注:size 操作得到的类型为size_type
vector<int>::size_type lenth
string::size_type lenth

迭代器使用

  • 迭代器运算符

    == != 表示迭代器是否指向同一个元素,或者同一个迭代器是否只指向尾部

    • iter 返回对改元素的引用
      iter->mem == (*iter).mem
      ++iter –iter
      如果为const_iterator 只能读,不能写
      例如string::const_iterator it
      vector<int>::const_iteratot it
      begin(),end() 根据对象确定是否为常量
      cbegin(),cend() 返回为常值迭代器
  • vector 遍历方法

    (1)for(auto a:s){...}
    (2)auto a = s.begin()//vector<T>::iterator a=s.begin()
    for(;a!=s.end();++a) {...}


数组

size_t 类型 用来表示数组下标 足够大足以存任意对象的大小
头文件cstddef // stddef.h unsigned int
size_t 类型表示C 中任何对象所能达到的最大长度。它是无符号整数, 因为负数在这里没有意义。它的目的是提供一种可移植的方法来声明与系统中可寻址的内存区域一致的长度。size_t 用做sizeof 操作符的返回值类型,同时也是很多函数的参数类型,包括malloc 和strlen。在声明诸如字符数或者数组索引这样的长度变量时用size_t 是好的做法。它经常用于循环计数器、数组索引,有时候还用在指针算术运算上。
数组的遍历 也可使用for(auto i : scores);
数组begin 和 end ,int *beg = begin(ia);

注意:使用迭代器过程中不能使用push_back