当前位置: 首页 > news >正文

wap建站php源码我的网站模板

wap建站php源码,我的网站模板,安装下载应用,网站建设 项目书 框架1.1 map及其函数 map 提供一对一的数据处理能力#xff0c;由于这个特性#xff0c;它完成有可 能在我们处理一对一数据的时候#xff0c;在编程上提供快速通道。map 中的第一 个值称为关键字(key)#xff0c;每个关键字只能在 map 中出现一次#xff0c;第二个称为该 关…1.1 map及其函数 map 提供一对一的数据处理能力由于这个特性它完成有可 能在我们处理一对一数据的时候在编程上提供快速通道。map 中的第一 个值称为关键字(key)每个关键字只能在 map 中出现一次第二个称为该 关键字的值(value)可以重复。 // 定义以 string, int 对为例 #include map mapstring, int mp; // 底层是红黑树元素可比较大小key 的结构体要重载 运算// 1- 插入 mp.insert(make_pair(zhs, 18)); // 插入一个键值对若原先存在该 key则无法插入和覆盖 mp.insert(pairstring,int(zhs, 18)); // 插入一个键值对若原先存在该 key则无法插入和覆盖 mp[zhs] 18; // 甚至可以类似数组下标去访问 key 对应的 value若原先不存在该 key则创建若原先存在则覆盖以前该关键字对应的值 mp.emplace(zhs, 18); // 插入效果跟 insert 效果完全一样// 2- 删除mp.erase(key); // 删除值为 key 的元素 mp.erase(iter); // 删除迭代器 iter 指向的元素例如mp.erase(mp.begin()); mp.erase(iter1, iter2); // 删除区间 [iter1, iter2) 的所有元素例如 mp.erase(mp.begin(), mp.end()); mp.clear(); // 清空集合// 3- 求大小 int siz mp.size(); // 求集合大小 bool flag mp.empty(); // 集合判空// 4-查询 if(mp.find(key) ! mp.end()) // find 函数返回一个指向被查找到元素的迭代器cout mp[key] endl; if(mp.count(key)) // count 返回某个值元素的个数cout mp[key] endl; auto iter mp.lower_bound(key); // 求 key 的下界返回指向大于等于某值的第一个元素的迭代器 auto iter mp.upper_bound(key); // 求 key 的上界返回大于某个值元素的迭代器// 5-遍历 mapstring, int::iterator iter; // 正向遍历for(itermp.begin(); iter!mp.end(); iter) {cout iter-first iter-second endl;// 或者cout (*iter).first (*iter).second endl; }mapint::reverse_iterator riter; // 反向遍历 for(ritermp.rbegin(); riter!mp.rend(); riter) {// 遍历的同时修改iter-second 10;cout iter-first iter-second endl; } for (auto x : mp){ // C 11 auto 遍历cout x.first x.second endl; } for (auto x : mp){ // C 11 auto 遍历x.second 10; // 遍历并修改cout x.first x.second endl; }// 6- 求最值 mapstring, int::iterator it mp.begin(); // 最小值 cout *it endl; mapstring, int::iterator it mp.end(); // 最大值 cout *(--it) endl; /* 1. map 和 set 一样其中的元素必须支持 运算符 2. 在插入时使用 insert 和 用数组方式去插入在原先存在要插入的键值 时是有区别的insert不会插入用数组方式插入则会直接覆盖原先数据 3. map 的迭代器支持 、--、、!、(*iter).first、 (*iter).second、iter-first、 iter-second 等操作 4. map 的迭代器不支持 、-、 、- 等算术操作符也不支持 、、 、 等比较操作符 */ 1.2 map的插入和遍历 //map的插入和遍历 #includebits/stdc.h using namespace std; mapstring,int mp; int main(){int n,age;string s;cinn;for(int i0;in;i){cinsage;mp[s]age;}mapstring,int::iterator it;//遍历mapfor(itmp.begin();it!mp.end();it){coutit-first it-secondendl;}return 0; }1.3 set及其函数 set 的含义是集合它是一个 有序的容器里面的元素都是排序好的支持插入、删除、查找等操作就像一个集合。所有的操作的都是严格在O(logn)时间之内完成效率非常高。 set 和 multiset 的区别是set插入的 元素不能相同但是multiset 可以相同。 // 1- 定义 #include set setint s; // 元素必须可比较大小元素类型必须要支持 运算结构体需要重载 // 2- 插入 s.insert(key); // 插入// 3- 删除 s.erase(key); // 删除值为 key 的元素 s.erase(iter); // 删除迭代器 iter 指向的元素例如 s.erase(s.begin()); s.erase(iter1, iter2); // 删除区间 [iter1, iter2) 的所有元素例如 s.erase(s.begin(), s.end()); s.clear(); // 清空集合// 4- 求大小 int siz s.size(); // 求集合大小 bool flag s.empty(); // 集合判空// 5-查询 if(s.find(key) ! s.end()) // find 函数返回一个指向被查找到元素的迭代器cout exist endl; if(s.count(key) 1) // count 返回某个值元素的个数cout exist endl; setint::iterator iter s.lower_bound(key); // 求 key 的下界返回指向大于等于某值的第一个元素的迭代器 setint::iterator iter s.upper_bound(key); // 求 key 的上界返回大于某个值元素的迭代器 // auto 类型推断关键字 在NOI 系列比赛中也可以使用了 auto iter s.lower_bound(key); // 求 key 的下界返回指向大于等于某值的第一个元素的迭代器 auto iter s.upper_bound(key); // 求 key 的上界返回大于某个值元素的迭代器// 6-遍历 setint::iterator iter; // 正向遍历 for(iters.begin(); iter!s.end(); iter) {cout*iterendl; } setint::reverse_iterator riter; // 反向遍历不重要 for(riters.rbegin(); riter!s.rend(); riter) {cout*riterendl; }// 7- 求最值 setint::iterator it s.begin(); // 最小值 cout *it endl; setint::iterator it s.end(); // 最大值 cout *(--it) endl; /* 注意 1. set 和优先队列一样其中的元素必须支持 运算符 2. set 的迭代器支持 、--、、!、*iter 等操作 3. set 的迭代器不支持 、-、 、- 等算术操作符也不支持 、、 、 等比较操作符 */ 1.4 set的插入和遍历 #includebits/stdc.h using namespace std; int main(){setint s;//set可以自动去重和排序默认升序int n,t;cin n;for(int i1;in;i){cin t;s.insert(t);//set没有push_back操作}setint::iterator it;//set需要使用迭代器遍历数据for(its.begin();it!s.end();it){//set支持双向迭代器cout *it ;} }1.5 ASCII码值、字母大小写转换、’0‘~’9‘ // 数字转字符: A(65) a(97) 0(48) char A char(65); char a char(97); char c a 2; // c a 2 char seven 0 7; // 7 0 7 // 字符转数字 int a a; // a: 97 int A A; // A65 int t t - a; // 计算字母间差值 int seven 7 - 0;1.6 常见字符串函数与reverse // 最常用的操作 str.size();//返回字符串长度 str.length();//返回字符串长度 str.empty();//检查 str 是否为空为空返回 1否则返回 0 str[n];//存取 str 第 n 1 个字符 str.at(n);//存取 str 第 n 1 个字符如果溢出会抛出异常// 反转 reverse(str.begin(), str.end());// 查找 str.find(ab);//返回字符串 ab 在 str 的位置 str.find(ab, 2);//在 str[2]~str[n-1] 范围内查找并返回字符串 ab在 str 的位置 str.rfind(ab, 2);//在 str[0]~str[2] 范围内查找并返回字符串 ab在 str 的位置 if(str.find(ab)!string::npos) { cout 下标为: str.find(ab); }// 子串 str.substr(3); // 返回 [3] 及以后的子串 str.substr(2, 4); // 返回 str[2]~str[2(4-1)] 子串(即从[2]开始4个字符组成的字符串) str.substring(5, 10); // 返回 str[5]~str[9] 子串(不包含结尾)// 插入 str.insert(2, sz);//从 [2] 位置开始添加字符串 sz并返回形成的新字符串 str.insert(2, abcd, 3);//从 [2] 位置开始添加字符串 abcd 的前3 个字符并返回形成的新字符串 str.insert(2, abcd, 1, 3);//从 [2] 位置开始添加字符串 abcd 的前 [2]~[2(3-1)] 个字符并返回形成的新字符串// 删除 str.erase(3);//删除 [3] 及以后的字符并返回新字符串 str.erase(3, 5);//删除从 [3] 开始的 5 个字符并返回新字符串// 替换 str.replace(2, 4, sz);//返回把 [2]~[2(4-1)] 的内容替换为 sz后的新字符串 str.replace(2, 4, abcd, 3);//返回把 [2]~[2(4-1)] 的内容替换为abcd 的前3个字符后的新字符串// 追加 str str abc; str.push_back(a);//在 str 末尾添加字符a str.append(abc);//在 str 末尾添加字符串abc 1.7 stringstream stringstream 主要是用在字串分割可以先用 clear() 以及 str() 将字 符串读入并进行分割再用 把内容输出例如 string s; stringstream ss; int a, b, c; getline(cin, s); ss.clear(); ss.str(s); ss a b c;1.8 字典序 什么是字典序所谓字典序就是以ASCII码排序。比如两个字符串 abcd 和 abdd 比较大小。 从第一个字符开始逐位比 较第一个字符不相等谁的ASCII码值小谁的字典序就小。若第一个相 等继续逐位比较后续字符。比较到字母c 字母d所以第一个字符串 abcd 字典序较小。再比如 hist 和 history 比较大小。若逐位比较都相等但其中一 个没有后续的字符了则较短的串 hist 字典序较小。使用 sort() 可以对字符串进行字典序排序字符按ASCII码值由小 到大排列 string str agfdvdsgds; sort(str.begin(),str.end());1.9 结构体排序 结构体是 自定义类型 它就像一个 能装不同数据类型 的“包裹”。当你声明 一个结构体后需要赋予这个结构体一个名字即 结构体名 。而 定义具 体变量时也可以定义结构体数组 。这相当于告诉计算机你一口气定义 了许多“包裹”每一个“包裹”里面都可以装入许多不同或相同数据类型的变 量。 **结构体的声明**使用结构体前需要先声明一个结构体类型再进行定义和使用。结构体 类型的声明格式为 struct 结构体类型名{ //其中sruct是关键字在c中表示结构体数据类型 成员变量1; //多个成员变量可以具有不同的数据类型数据类型 成员变量2;...... };声明之后就可以定义结构体变量了格式如下 结构体类型名 变量名struct 可省略例如 我们需要表示一个学生的信息首先我们声明学生的结构体 struct student{ //student表示结构体的类型名string name;char sex;int age;float height,score; }; 然后定义一个具体的学生 student zhangsan;//声明一个student的结构体变量叫zhangsan当然我们如果需要很多学生可以声明为结构体数组 student a[1001];//创建结构体数组a //a数组中的每一个元素都是一个结构体类型student的变量另外 为方便起见我们一般直接在声明结构体的同时定义变量格式如下 struct 结构体类型名{ //其中sruct是关键字在c中表示结构体数据类型成员变量1 //多个成员变量可以具有不同的数据类型数据类型成员变量2...... }结构体变量表;比如 struct student{string name;char sex;int age;float height,score; }a[1001];.结构体的使用 将结构体变量视为一个整体进行操作例如 swap(a[1], a[2]);使用符号“.”对结构体变量的成员进行操作“.”的含义可以理解为中文 的“的”格式为 结构体名.成员变量名比如 student a;//李四 cin a.name;//输入赋值李四的名字 a.age 23;//直接赋值给李四的年龄为23结构体的初始化 集合形式比如 student a {tuotuo,F,12,168,100};逐一赋值比如 student a; cin a.name a.sex; a.age 12;结构体中的sort()函数 现在给你一个结构体现在有这样一个要求按照年龄从小到大输出。 那我们就照结构体中成员变量age也就是年龄进行从小到大的排序代 码如下 #includebits/stdc.husing namespace std;struct student { string name; int age; float height; }; bool cmp(const student a, const student b) { return a.age b.age; } int main() { student a[10] { {Alice, 20, 165.5}, {Bob, 22, 180.0}, {Charlie, 19, 170.2}, {David, 21, 175.0}, {Eve, 20, 160.0}, {Frank, 23, 185.0}, {Grace, 18, 155.0}, {Henry, 22, 182.0}, {Isabella, 21, 168.0}, {Jack, 19, 172.0} }; // 打印排序前的学生信息 for (int i 0; i 10; i) { cout Name: a[i].name , Age: a[i].age , Height: a[i].height endl; } // 使用 sort 函数对数组进行排序 sort(a, a 10, cmp); // 打印排序后的学生信息 cout Sorted by age: endl; for (int i 0; i 10; i) { cout Name: a[i].name , Age: a[i].age , Height: a[i].height endl; } return 0; } 1.10 浮点数比较 因为C/C内置的double类型也是由相应的二进制存储的所以double在 计算的时候是会可能丢失精度的最后进行浮点数比较的时候要注意做一 个 fabs //比较两个浮点数是否相等 bool compareDouble(double a,double b) { double eps 1e-6 //注意精度默认是1e-6有时候精度要求不高可 以降低精度要求 if(fabs(a-b)eps) return true; return false; }1.11 调试中常见错误 注意 数据范围!!!定义单个变量能用 long long 就不要用 int 能定义为 double 就不要用 float 。maxn 、 minn (最大值、最小值)或者 cnt (计数器)忘记 赋初始值。忘记删除用来检查代码的语句比如添加了多余的打印操作。没理解题目的意思就开始做题。要结合样例去理解题目。注意题目数据范围很大的时候 考虑优化。数组开太大。比如: int arr[10000][10000] 则 arr 的空间大小约为 400M远超题目的空间限制。边界条件考虑不充分。变量命名与c自带的名称冲突(因此慎用万能头文件)。如:int time; int max; int min等等。写了初始化函数 没有调用。使用函数时 参数传错。用了一个新的知识点但自己不太清楚就用了。要注意写的代码最好是你完全能明白的。if里面的判断条件没想清楚还继续往下写。循环里面条件写反比如: for(int i n;i 0;i )双重循环里面 i 和 j写反或者两个循环变量都写成 i。字符串 string 中遍历 string 的操作最好用 for(int i 0;i s.size(); i) 不要用小于等于 i s.size() - 1
http://www.w-s-a.com/news/392741/

相关文章:

  • 绿色农产品网站景区网站建设策划方案
  • 服务器做ssr后还可以做网站吗品牌形象设计公司
  • 太原网站制作计划wordpress创建文章
  • 网站优化要怎么做seo网站关键词优化报价
  • 公司网站友情链接怎么做副链华为荣耀手机官网
  • 一条龙做网站旅游网页设计模板图凡科
  • 中山网站建设哪家便宜在中国做外国网站怎么收钱
  • 网站优化大计孝感注册公司
  • 设计接单app平台有哪些在线网站seo诊断
  • 兰州网站建设推广现代营销手段有哪些
  • 郴州网站seo优化网络安全哪个培训班比较好
  • 做网站需要记哪些代码企业网站建设思路
  • 重庆自助建站模板网络服务器配置与管理
  • 外贸网站怎样做小程序买量平台
  • 中山精品网站建设机构海外留学网站建设方案
  • 长春网站建设工作如何取消wordpress页脚
  • 忻府网站建设排名网络管理系统官网
  • 张家港外贸网站建设国医堂网站平台建设
  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码
  • 网站建设朋友圈素材青白江建设网站
  • 红酒网站设计软件设计文档
  • 如何创建网站目录网站申请支付宝接口