C++ Primer个人笔记 by Nicolas 第三章

转载请注明出处:http://blog.csdn.net/auto_ac/article/details/43966695

注:内容不全,记录的是部分细节知识点

string

几个初始化:

std::string str1 = "abc";

std::string str2(str1);

std::string str3("abcd");

std::string str4(10, 'a');                           //初始化为 10个a


size()类型:

std::string::size_type (unsigned long)


赋值:

str2 = str1;  先将str2内存释放掉,再重新分配内存存放str1副本


字符串字面值的连接:

std::string s1("hello");

std::string s2("world");

std::string s3 = s1 + ", ";                                         (ok)

std::string s4 = "hello" +", ";                                    (error)

std::string s5 = s1 + ", " +"world";                           (ok) //重要

std::string s6 = "hello" +", " + s2;                            (error)


string比较运算符:

<, >, =, !=, <=, >=    按字典序比较


getline

std::string str;getline(std::cin, str);


cctype

判断函数:

isalnum 数字字母

isalpha 字母

iscntrl 控制符

isdigit 数字

isgraph 不是空格,但可打印

islower 小写字母

isprint 可打印

ispunct 标点符号

isspace 空格

isupper 大写

isxdight 十六进制数


变换函数:

tolower 大写字母变成小写,其它字母不变

toupper 小写字面变成大写,其它字母不变


vector

几个初始化:

vector <T> v1;

vector <T> v2(v1);

vector <T> v3(n, i);                           //n个值为i的元素

vector <T> v4(n);                             //初始化n个元素的副本

注:初始化没赋值都为空, 比方int的值是0, string的值是空字符串


vector对象的操作:

v.empty()

v.size()

v.push_back();

v[n]

v1 = v2                                赋值

v1 == v2                              判断对象是否相等

!=, <, <=, >. >=                     对象比较大小


vector迭代器:

*iter = 0;  解引用操作符(*操作符)

vector<int>::iterator iter;                                  //迭代器定义

vector<int>::const_iterator iter;                        //不改变对象的值的迭代器定义,迭代器可以修改值重点

const vector<int>::iterator iter = v.begin();       //迭代器的值不能修改;重点

*(iter+number)                                                 //越界或碰到v.end()可以存在,可以与其它迭代器进行判断,

                                                                        //但不能进行解引用运算, 

                                                                        //number类型为vector::size_type 

*(iter-number) 

iter1-iter2                                                        //两个迭代器的距离,类型为difference_type (long long)

vector<int>::iterator it = (v.begin()+v.end())/2;   //接近O(1),取最中间的元素的迭代器

注:任何改变vector长度的操作都会使已存在的迭代器失效,例如在push_back(), erase()以后


bitset

几个初始化:

bitset<n> b;                              //n位,每位都为0

unsigned u = “4“;

bitset<n> b(u);                          //b为u的二进制副本, 位置0为低位, 即b[2] = 1;

string s = “101010101”;

bitset<n> b(s);                          //b为s串的副本,注意s必须是01串,否则报错,程序终止

bitset<n> b(s, pos, count)        //pos为串s的起始位置,count为串的长度,选串的一部分作为副本给b


例子:

bitset<16> bitvec1(0xffff);         // 位置0为低位,即1111111111111111

bitset<32> bitvec1(0xffff);        // 位置0为低位,即11111111111111110000000000000000

string s("111011");

bitset<32> b(s);                      //位置0为低位,即1110011000000000000000000000000

bitset<32> b(s, 2, 4);             //选串s的2~5位,位置0为低位,

                                              //即10110000000000000000000000000000

bitset<32> b(s, s.size()-3);   //倒着取最后3位,即110000000000000000000000000000


bitset对象的操作:

b.any()                             是否存在有1的位

b.none()                           不存在有1的位

b.count()                          有1的位数

b.size()

b[pos]

b.test(pos)                        测试pos位是否为1

b.set()                            全部设1

b.set(pos)                         pos位设1

b.reset()                           全部设0

b.reset(pos) pos位设0

b.flip()                            全部取反

b.flip(pos)                        pos位取反

b.to_ulong()                     转换成unsigned long整数

os << b                            逐位输出,从高位到低位,  比方bitset<32> b("1011");  

                                         存储为11010000000000000000000000000000(0~31)

                                         输出为00000000000000000000000000001011 (31~0)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值