c++ primer---读书笔记3
来源:互联网 发布:cok服务端账号数据在哪 编辑:程序博客网 时间:2024/05/20 07:13
抽象数据类型:重要的两种
string 长度可变字符串
vector 保存一组指定类型的对象
bitset 进行方便的位操作
注意:通常头文件中只定义需要的东西。
using声明 声明一次只能作用于一个命名空间的成员
例子:using std::cin;
1. string
string四种初始化:
string s1;
string s2(s1);
string s3("value");
string s4(n, 'c');
通过getline函数读取整行文本,getline(cin, line)
一般而言,避免使用using指示而使用using声明。避免由于引入多个库导致名字冲突。
string的操作:
s.empty() s.size() s[n] s1+s2 s1=s2 v1 == v2 != < <= > >=
注意:size操作结果的变量必须为string::size_type。它是一个unsigned类型的。
特别注意size返回值不要赋给int变量。(可能越界)
注意+操作符的左右数至少要有一个是string类型的。
string s2 = "world";
string s6 = "hello" + "," +s2;
可以进行下标操作,下标操作可以用做左值。s6[1]='*';
cctype头文件中定义了各种字符操作函数。
2.vector
vector可以称为容器,包含其他对象。但对象必须是同一类型。
注意:vector不是数据类型,而是类模板;但是vector<int>和vector<string>是数据类型。
vector四种初始化:
vector<T> v1;
vector<T> v2(v1);
vector<T> v3(n, i);
vector<T> v4(n);
虽然可以对给定元素个数vector预先分配内存,但更有效的是先初始化一个空vector对象,然后再动态追加元素。
注意:必须是已经存在的元素才能进行下标操作进行索引。下标操作赋值,不会添加任何元素。
另外还可以用迭代器进行访问。
所有标准库容器都提供了迭代器,只有少数支持下标操作。
迭代器:若一种类型支持一组确定的操作(这些操作可以用来遍历容器内元素,并访问这些元素的值),我们称
之为迭代器。
每种容器都定义了begin和end函数用来返回迭代器。begin返回首个,end返回最后一个的下一个。
*解引用操作符。
iterator const_iterator只读iterator
const iterator同const_iterator区别;前者不可遍历元素,后者不能改变元素的值。
3.bitset类型
#include<bitset>
初始化
bitset<n> b;
bitset<n> b(u); 数字初始化
bitset<n> b(s); 字符串初始化,读取顺序从右往左
bitset<n> b(s, pos, n); 字符串初始化。
总结: 相对于数组和指针,应优先使用标准库类型。
注意:任何改变vector长度的操作都会使iterator失效。调用push_back后就不能信赖vector的值了。
- 《C++Primer》读书笔记(3)
- C primer plus 读书笔记3
- c++primer读书笔记(3)
- <<C++Primer PLus 第五版>>读书笔记3
- C primer plus 读书笔记(3)
- <<C++Primer PLus 第五版>>读书笔记3
- C-PRIMER PLUS读书笔记
- C-PRIMER PLUS读书笔记
- C++Primer读书笔记(一)
- C Primer Plus 读书笔记
- C++Primer读书笔记(二)
- 写写C++Primer读书笔记
- C primer 读书笔记1
- C++Primer读书笔记
- C++Primer读书笔记 Al
- C++primer读书笔记
- c primer读书笔记 第一章
- C++primer读书笔记5
- 内核配置选项之CONFIG_AEABI
- c++ primer---读书笔记1
- 晒晒自己的工资吧
- c++ primer---读书笔记2
- 2010-03-01
- c++ primer---读书笔记3
- 22
- linux find 命令忽略某个或多个子目录的方法
- ZOJ题目分类(转)
- VC++2010基于windows Sdk for windows7 开发CrytoAPI应用--签名与验证
- b/s结构
- 目前最流行的几种数据库比较
- c/s结构
- 界面原型在软件开发中的应用