3、字符串、向量、数组
2017-09-05 12:13
162 查看
1、使用using声明就无需专门的前缀(如std::)。头文件不应包含using声明
2、string:标准库类型string表示可变长的字符序列。
3、string对象操作
(1)getline读取一行,保留输入时的空格
(2)s.size()返回的是一个无符号整数,string::size_type类型值,size_type在类string中定义
(3)字符串字面值和string是不同的类型!!!
(4)C语言头文件xx.h,C++兼容但是名字改为cxx;c代表是源c语言中文件
4、vector表示对象的集合,是容器的一种
(1)初始化,vector下标类型也是size_type
(2)添加元素xx.push_back,尾部插入。下标可以访问已存在的元素,但是不能在初始化为空的vector中用下标插入元素。
5、迭代器iterator,指针是一种迭代器,支持访问容器中一个元素到另一个元素操作
xx.begin() 返回第一个元素的迭代器
xx.end()返回尾元素下一个位置的迭代器
C++在循环中习惯于使用!=,因为所有标准库容器都定义了==和!=,但是他们中的大多数没有定义<运算。凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。
6、数组,不确定元素个数用vector
(1)定义数组类型不允许使用auto
(2)复杂的数组声明,由内向外,由右向左
(3)数组下标类型为size_t
(4)auto和decltype的使用能够避免在数组前面加上一个指针类型。
#include <iostream> using std::cin; using std::cout; using std::endl; int main() { cout << "Enter two numbers:" << endl; int v1 = 0, v2 = 0; cin >> v1 >> v2; cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << endl; return 0; }
2、string:标准库类型string表示可变长的字符序列。
#include <string> using std::string; int main() { //字符串初始化 string s1("11111cccc"); string s2(4,'a');//s2="aaaa" string s3 = s1 + "123";//可以 string s4 = "123" + "avd";//不可以直接加两个字面值 }
3、string对象操作
(1)getline读取一行,保留输入时的空格
int main() { string line; while(getline(cin, line)) cout << line <<endl; return 0; }
(2)s.size()返回的是一个无符号整数,string::size_type类型值,size_type在类string中定义
(3)字符串字面值和string是不同的类型!!!
(4)C语言头文件xx.h,C++兼容但是名字改为cxx;c代表是源c语言中文件
//遍历字符串for string str("Abcdefg"); for(auto &c : str) c = toupper(c);//c是引用,操作c就是直接操作str cout << s <<endl;
4、vector表示对象的集合,是容器的一种
#include <vector> using std::vector;
(1)初始化,vector下标类型也是size_type
vector<int> a(10,8);//10个int元素都被初始化为8 vector<string> p={"1","ab","title"};
(2)添加元素xx.push_back,尾部插入。下标可以访问已存在的元素,但是不能在初始化为空的vector中用下标插入元素。
//从键盘输入元素压入 string word; vector<string> text; while(cin >> word) text.push_back(word);
5、迭代器iterator,指针是一种迭代器,支持访问容器中一个元素到另一个元素操作
xx.begin() 返回第一个元素的迭代器
xx.end()返回尾元素下一个位置的迭代器
//把字符串第一个字母边长大写 string s("somebody"); if(s.begin() != s.end()){ auto it = s.begin(); *it = toupper(*it); }
C++在循环中习惯于使用!=,因为所有标准库容器都定义了==和!=,但是他们中的大多数没有定义<运算。凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。
6、数组,不确定元素个数用vector
(1)定义数组类型不允许使用auto
(2)复杂的数组声明,由内向外,由右向左
(3)数组下标类型为size_t
int *ptrs[10]; //10个指针的数组 int (*a)[10]=&b; //a指向一个含有10int元素的数组 int *(&c)[8] = ptr; //c是一个数组的引用,该数组有10个指针 int a[] = {0,1,2,3,4}; auto b(a); //b是一个指针,指向数组a的第一个元素 //把row定义成一个含有4个整数的数组的引用,然后将其绑定到ia的第二行。 int (&row)[4] = ia[1];
(4)auto和decltype的使用能够避免在数组前面加上一个指针类型。
int a[3][4]; int (*p)[4] = a; //p指向含有4个整数的数组 p = &a[2]; //外层一行一行变换,p指向含有4个整数的数组,每行首地址,auto p = begin(a)这时p是个二级地址 for(auto p = begin(a); p != end(a); ++p) for(auto q = begin(*p); q != end(*p); ++q) cout << *q << ''; cout << endl;
相关文章推荐
- 待续:字符串、向量和数组
- 字符串、向量和数组(一)
- 《C++Primer》读书笔记——第3章 字符串、向量和数组
- [C++ primer]第三章笔记--字符串、向量和数组
- C++学习笔记 | 第三章 字符串、向量和数组 | (1)
- 字符串、向量和数组---C++ 基础
- 第3章 字符串、向量和数组
- C++ primer阅读笔记------------字符串,向量和数组
- 《c++primer》第3章 字符串向量和数组
- (三)字符串、向量、数组
- 2017-4-28 C++笔记 (第三章 字符串、向量和数组)
- 三、字符串、向量和数组
- C++字符串、向量和数组笔记
- c++11(2):字符串、向量和数组
- 第三章 字符串、向量、数组
- 《C++primer(第五版)》学习之路-第三章:字符串、向量和数组
- C++ Primer学习笔记之第三章--字符串,向量和数组
- C++ Primer_3 字符串、向量和数组
- 字符串、向量和数组(三)
- C++ Primer 3章 字符串、向量和数组