标签:set ack 容器 组件 turn 连接 自定义 nta 一半
---恢复内容开始---
// 对静态数组 int c[] = { 1, 2, 3, 4 }; sort(c, c + 4); // 对vector vector<int> a; sort(a.begin(), a.end()); // 自定义“小于” bool comp(const student &a, const student &b){ return a.score < b.score; } vector<student> vectorStudents; sort(vectorStudents.begin(),vectorStudents.end(),comp); // set自动从小到大排序 // 对于某些无法确定大小的比较无法像sort函数那样传入自定义cmp // 因此可以使用重载<符的方法 bool operator < (const student & stu1,const student &stu2){ return stu1.score > stu2.score; }
#include <vector> using namespace std;
// 初始化 // 用数组初始化 int n[] = {1, 2, 3, 4, 5} ; vector<int> a(n, n+5) ; vector<int> a(&n[1], &n[4]) ; // 转化成数组 float *buffer = new float[vecHeight.size()]; memcpy(buffer, &vecHeight[0], vecHeight.size()*sizeof(float)); // 其他 vector<int> a ; // 声明一个int型向量a vector<int> a(10) ; // 声明一个初始大小为10的向量 vector<int> a(10, 1) ; // 声明一个初始大小为10且初始值都为1的向量 vector<int> b(a) ; // 声明并用向量a初始化向量b vector<int> b(a.begin(), a.begin()+3) ; // 将a向量中从第0个到第2个(共3个)作为向量b的初始值 // 赋值 c.assign(n, elem); // 将n个elem的拷贝赋值给c c.assign(a.begin(), a.end()); // 可以用来做a的切片 // 遍历 vector<int>::iterator t; for(t=a.begin(); t!=a.end(); t++) cout<<*t<<" " ; // 基本操作 a.size(); // 获取向量中元素个数 c.capacity(); // 返回预分配的内存空间 a.empty(); // 是否为空 a.clear(); // 清空向量 a = b; // 复制 a == b; // 比较 // 也可以做大于小于等比较,取决于第一个不相等的元素 c.front(); // 传回第一个数据 // 插入 // 插入一个数到起始位置 a.insert(a.begin(), 1000); // 插入多个 a.insert(a.begin(), 3, 1000); b.insert(b.begin(), a.begin(), a.end()); // 删除 // 删除一个 b.erase(b.begin()); // 删除一段 b.erase(b.begin(), b.begin()+3); // 删除并返回最后一个 c.pop_back() // 交换 // a向量完全和b进行交换 b.swap(a); // 二维向量 // 十行五列 vector< vector<int> > b(10, vector<int>(5)); // 析构 c.~vector () // 销毁所有数据,释放内存
#include <map> using namespace std; // 构造 map<int, string> mapStudent; // 数据插入 // 1. insert pair数据 mapStudent.insert(pair<int, string>(1, "student_one")); // 2. insert value_type数据 mapStudent.insert(map<int, string>::value_type (2, "student_two")); // 前两种方式如果key值已存在则插入不了,不会发生任何事 // 此时判定是否插入成功: pair<map<int, string>::iterator, bool> Insert_Pair; Insert_Pair = mapStudent.insert(map<int, string>::value_type (1, "student_one")); // 如果Insert_Pair.second为true则插入成功 // 3. 用map[key] = value赋值 mapStudent[3] = "student_three"; // 遍历 // 用迭代器获取的数据类型是一个std::pair对象 for(map<int, stirng>::iterator it = mapStudent.begin(); it != mapStudent.end(); it++) { cout<<iter->first<<‘ ‘<<iter->second<<endl; } // 数组遍历 for(int nindex = 1; nindex <= nSize; nindex++) cout<<mapStudent[nindex]<<endl; // 大小 mapStudent.size(); // 查找 mapStudent.count(1); // 存在返回1,否则返回0 mapStudent.find(1); // 存在返回key对应的指针(map::iterator 类型),否则返回mapStudent.end() // 删除 // 1. 通过指针(迭代器)删除 map<int, string>::iterator iter; iter = mapStudent.find(1); mapStudent.erase(iter); // 删除一个 mapStudent.erase( mapStudent.begin(), mapStudent.end() ); // 删除一片(前闭后开) // 2. 通过关键字删除 int n = mapStudent.erase(1); // 如果删除了会返回1,否则返回0 // 交换swap // 跟vector一样,两个map完整交换 // 排序 // map和set一样默认key从小到大排列,当出现无法排列的情况可以重载小于号 // 仿函数的应用
#include <string> using namespace std; // 构造 string s; // 生成一个空字符串s string s(str); // 拷贝构造 string s = str; string s(str, stridx); // 将字符串str内“始于位置stridx”的部分当作字符串的初值 string s(str, stridex, strlen); // 将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值 string s(cstr) //将C字符串作为s的初值 char cstr[] = "good!"; string s(chars,chars_len) // 将C字符串前chars_len个字符作为字符串s的初值。 string s(num,c) //生成一个字符串,包含num个c字符 string s(str.begin(),str.end()) //以区间beg;end(不包含end)内的字符作为字符串s的初值 // 与C风格字符串转换 s.c_str(); // 生成一个const char*指针,指向以空字符终止的数组 s.copy(cstr, 3, 1); //拷贝3个字符,从1个字符开始(位置下标从0开始),把字符串的内容复制或写入既有的c_string或字符数组内 // unsafe s.data(); // 与c_str()类似,但是返回的数组不以空字符终止。 // 基本操作 s.size(); s.length(); // 等效 s.empty(); s[1]; // 下标访问 // 迭代 for (string::iterator it = str.begin(); it != str.end(); it++) { cout << *it << endl; } // 交换 // 同vector // 连接 s1 = s2 + s3; // 查找 int index = s1.find("wbm", 0); //位置下标从0开始 找不到返回-1 //查找每一次wbm出现的下标 int offindex = s1.find("wbm", 0); while (offindex != string::npos) //不等于-1 { cout << "offindex: " << offindex << endl; offindex++; offindex = s1.find("wbm", offindex); } // 替换 s1.replace(offindex, 3, "WBM"); // 从offindex位置开始,替换3位 // 插入 s1.insert(offindex, "AAA"); // 切片、提取子集 s.substr(); // 返回s的全部内容 s.substr(11); // 从索引11往后的子串 s.substr(5,6); // 从索引5开始6个字符 // 删除 // 删除一个 string::iterator it = find(s1.begin(), s1.end(), ‘l‘); s1.erase(it); // 删除一片 s1.erase(s1.begin(), s1.end()); // 大小写转换 // transform(first,last,result,op); transform(s1.begin(), s1.end(), s1.begin(), ::tolower); transform(s1.begin(), s1.end(), s1.begin(), ::toupper); // 销毁 s.~string(); // 销毁所有字符,释放内存
---恢复内容结束---
标签:set ack 容器 组件 turn 连接 自定义 nta 一半
原文地址:https://www.cnblogs.com/c2h5ohlife/p/9516893.html