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

做网站的费用计入销售费用吗专注昆明网站推广

做网站的费用计入销售费用吗,专注昆明网站推广,杭州盘石做网站专业吗,类似WordPress的Python一、Set的介绍 1.1、Set相关文档介绍 cplusplus.com/reference/set/set/?kwset 1. set是按照一定次序存储元素的容器 2. 在set中#xff0c;元素的value也标识它(value就是key#xff0c;类型为T)#xff0c;并且每个value必须是唯一的。 set中的元素不能在容器中修改…一、Set的介绍 1.1、Set相关文档介绍 cplusplus.com/reference/set/set/?kwset  1. set是按照一定次序存储元素的容器 2. 在set中元素的value也标识它(value就是key类型为T)并且每个value必须是唯一的。 set中的元素不能在容器中修改(元素总是const)但是可以从容器中插入或删除它们。 3. 在内部set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行 排序。 4. set容器通过key访问单个元素的速度通常比unordered_set容器慢但它们允许根据顺序对 子集进行直接迭代。 5. set在底层是用二叉搜索树(红黑树)实现的。 注意 1. 与map/multimap不同map/multimap中存储的是真正的键值对key, valueset中只放 value但在底层实际存放的是由value, value构成的键值对。 2. set中插入元素时只需要插入value即可不需要构造键值对。 3. set中的元素不可以重复(因此可以使用set进行去重)。 4. 使用set的迭代器遍历set中的元素可以得到有序序列 5. set中的元素默认按照小于来比较升序 6. set中查找某个元素时间复杂度为log2  7. set中的元素不允许修改 8. set中的底层使用二叉搜索树(红黑树)来实现 1.2、Set的使用 既然set是容器那他也可以像前几个一样被构造。头文件#includeset 1.空构造和拷贝构造         setint s1;         setint s2(s1); 2.迭代器构造         string s3(I love C);         setchar s4(s.begin(), s.end()); 3.大于比较         set的底层是搜素二叉树默认是小于排序升序也可是调成大于排序降序。         setint, greaterint s5; 迭代器接口 容量接口 修改接口 这里我们对Set进行一些测试 #includeiostream #includeset using namespace std;void test1() {setint s1;s1.insert(1); //插入操作s1.insert(3);s1.insert(5);s1.insert(7);s1.insert(4);s1.insert(4);s1.insert(5);s1.insert(1);setint s2(s1);setint::iterator it s1.begin();for (auto e : s1){cout e ; // 1 3 4 5 7是升序排列别搞错了}cout endl;setint::iterator pos1 find(s1.begin(), s1.end(), 5);setint::iterator pos2 s1.find(7); //set自带的查找函数if (it ! s1.end()){s1.erase(pos1); //删除5s1.erase(pos2);s1.insert(10);s1.insert(20);}while (it ! s1.end()){cout *it ; //1 3 4 10 20*it;}cout endl;//删除指定区间setint::iterator ret s2.find(5);s2.erase(s2.begin(), ret);for (auto e : s2){cout e ; //5 7}cout endl;//寻找是否有val找到返回1if (s2.count(5)) // s2中有5就返回1进入循环{cout s2中有5 endl; //s2中有5}cout s2.empty() endl; // 判空cout s1.size() endl; //s1的个数是5cout s2.size() endl; //s2的个数是2 }int main() {test1(); } 二、multiset 的介绍 2.1、multiset相关文档介绍 cplusplus.com/reference/set/multiset/?kwmultiset 1. multiset是按照特定顺序存储元素的容器其中元素是 可以重复 的。 2. 在multiset中元素的value也会识别它(因为multiset中本身存储的就是value, value组成 的键值对因此value本身就是keykey就是value类型为T). multiset元素的值不能在容器 中进行修改(因为元素总是const的)但可以从容器中插入或删除。 3. 在内部multiset中的元素总是按照其内部比较规则(类型比较)所指示的特定严格弱排序准则 进行排序。 4. multiset容器通过key访问单个元素的速度通常比unordered_multiset容器慢但当使用迭 代器遍历时会得到一个有序序列。 5. multiset底层结构为二叉搜索树(红黑树)。 注意 1. multiset中再底层中存储的是value, value的键值对 2. mtltiset的插入接口中只需要插入即可 3. 与set的区别是multiset中的元素可以重复set是中value是唯一的 4. 使用迭代器对multiset中的元素进行遍历可以得到有序的序列 5. multiset中的元素不能修改 6. 在multiset中找某个元素时间复杂度为O(log2) 7. multiset的作用可以对元素进行排序 2.2、multiset的使用  multiset的count和erase跟set相比有很大区别 1、set.count(val)是如果找到val就返回1因为multiset的数可以重复multiset.count(val找到val后返回multiset中有几个val。 2、set.erase(val)是找到要删除的val后返回1multiset.erase(val)找到要删除的val后返回val有几个并且全删val。 这里我们对multiset进行一些测试 void test2() {multisetint multiset;multiset.insert(4);multiset.insert(5);multiset.insert(2);multiset.insert(1);multiset.insert(1);multiset.insert(3);multiset.insert(3);multiset.insert(3);for (auto e : multiset){cout e ; }cout endl;setint set(multiset.begin(), multiset.end());cout multiset.erase(1) endl;//2 返回删除的1的个数for (auto e : multiset){cout e ; //2 3 3 3 4 5}cout endl;cout set.erase(4) endl;//1 返回一个bool值存在删除的值返回1for (auto e : multiset){cout e ; //2 3 3 3 4 5}cout endl;auto pos1 multiset.find(3); //返回中序的第一个3的迭代器while (pos1 ! multiset.end()){cout *pos1 ;//3 3 3 4 5pos1;} } 三、Map的介绍 3.1、Map相关文档介绍 cplusplus.com/reference/map/map/?kwmap 1. map是关联容器它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。 2. 在map中键值key通常用于排序和惟一地标识元素而值value中存储与此键值key关联的 内容。键值key和值value的类型可能不同并且在map的内部key与value通过成员类型 value_type绑定在一起为其取别名称为pair: typedef pairconst key, T value_type; 3. 在内部map中的元素总是按照键值key进行比较排序的。 4. map中通过键值访问单个元素的速度通常比unordered_map容器慢但map允许根据顺序 对元素进行直接迭代(即对map中的元素进行迭代时可以得到一个有序的序列)。 5. map支持下标访问符即在[]中放入key就可以找到与key对应的value。 6. map通常被实现为二叉搜索树(更准确的说平衡二叉搜索树(红黑树 )) 。 3.2、Map的使用 #includeiostream #includemap using namespace std;int main() {mapstring, int m;//创建一个map对象m//向m中插入pairmapstring, int m1(m.begin(), m.end);//用m的区间构造m1mapstring, int m2(m1);//用m1拷贝构造m2return 0; } key: 键值对中key的类型 T 键值对中value的类型 Compare: 比较器的类型map中的元素是按照key来比较的缺省情况下按照小于来比 较一般情况下(内置类型元素)该参数不需要传递如果无法比较时(自定义类型)需要用户 自己显式传递比较规则(一般情况下按照函数指针或者仿函数来传递) Alloc通过空间配置器来申请底层空间不需要用户传递除非用户不想使用标准库提供的 空间配置器 注意在使用map时需要包含头文件#includemap map的迭代器 map的容量与元素访问          注意在元素访问时有一个与operator[ ]类似的操作at()(该函数不常用)函数都是通过 key找到与key对应的value然后返回其引用不同的是当key不存在时operator[ ]用默认 value与key构造键值对然后插入返回该默认valueat()函数直接抛异常。 map中元素的修改 map的key不允许被修改。 map中元素的查找 map可以用[ ]进行访问(不是下标访问一定要注意 mapped_type operator[] (const key_type k); 具体实现如下 mapped_type operator[] (const key_type k) {return (*((this-insert(make_pair(k, mapped_type()))).first)).second; } 这个如果不好理解的话看一下下面这个: mapped_type operator[] (const key_type k) {//1、调用insert返回迭代器区间pairiterator, bool ret insert(make_pair(k, mapped_type()));//2、利用ret调用value值return ret.first-second;//return (*(ret.first)).second; } 首先调用insert函数插入键值对返回迭代器ret通过返回的迭代器ret调用元素值value。 在这里我们又分两种情况去处理 1、如果k在map对象中则插入失败返回的bool类型为false返回的迭代器为k所在结点的迭代器而迭代器解引用*(ret.first)获得的就是pair最后再通过pair访问到value值整体可优化成ret.first-second这里返回引用的好处为查找k对应v修改k对应v。 2、如果k不在map对象中则插入成功返回的bool类型为true返回的迭代器为新插入的k所在结点的迭代器位置接着调用ret.first获得pair的迭代器再通过-second获得value这里返回引用的好处为插入和修改。 对Map的测试 void test_map1() {mapstring, string dict;//dict.insert(pairstring, string(sort, 排序));dict.insert(make_pair(sort, 排序));dict.insert(make_pair(string, 字符串));dict.insert(make_pair(count, 计数));//mapstring, string::iterator dit dict.begin();auto dit dict.begin();while (dit ! dict.end()){cout (*dit).first : (*dit).second endl;dit;}cout endl; }void test_map2() {mapstring, string dict;//dict.insert(pairstring, string(sort, 排序));dict.insert(make_pair(sort, 排序));dict.insert(make_pair(string, 字符串));dict.insert(make_pair(count, 计数));dict.insert(make_pair(string, (字符串))); // 插入失败dict[left]; // 插入dict[right] 右边; // 插入修改dict[string] (字符串); // 修改cout dict[string] endl; // 查找cout dict[string] endl; // 查找//mapstring, string::iterator dit dict.begin();auto dit dict.begin();while (dit ! dict.end()){//cout (*dit).first : (*dit).second endl;cout dit-first : dit-second endl;dit;}cout endl; }void test_map3() {string arr[] { 西瓜, 西瓜, 苹果, 西瓜, 苹果, 苹果, 西瓜, 苹果, 香蕉, 苹果, 香蕉, 梨 };mapstring, int countMap;//for (auto e : arr)//{// auto ret countMap.find(e);// if (ret countMap.end())// {// countMap.insert(make_pair(e, 1));// }// else// {// ret-second;// }//}for (auto e : arr){countMap[e];}for (auto kv : countMap){cout kv.first : kv.second endl;} }//V operator[](const K key) //{ // pairiterator, bool ret insert(make_pair(key, V())); // return ret.first-second; //}int main() {test_map1();test_map2();test_map3();return 0; } 【总结】 1. map中的的元素是键值对 2. map中的key是唯一的并且不能修改 3. 默认按照小于的方式对key进行比较 4. map中的元素如果用迭代器去遍历可以得到一个有序的序列 5. map的底层为平衡搜索树(红黑树)查找效率比较高O(log2) 6. 支持[]操作符operator[]中实际进行插入查找。 四、multiset的介绍 4.1、multiset相关文档介绍 1. Multimaps是关联式容器它按照特定的顺序存储由key和value映射成的键值对key, value其中多个键值对之间的key是可以重复的。 2. 在multimap中通常按照key排序和惟一地标识元素而映射的value存储与key关联的内 容。key和value的类型可能不同通过multimap内部的成员类型value_type组合在一起 value_type是组合key和value的键值对: typedef pairconst Key, T value_type; 3. 在内部multimap中的元素总是通过其内部比较对象按照指定的特定严格弱排序标准对 key进行排序的。 4. multimap通过key访问单个元素的速度通常比unordered_multimap容器慢但是使用迭代 器直接遍历multimap中的元素可以得到关于key有序的序列。 5. multimap在底层用二叉搜索树(红黑树)来实现。 注意 multimap和map的唯一不同就是map中的key是唯一的而multimap中key是可以 重复的。 4.2、multimap的使用 1、map中的valuevalue是唯一的不允许重复。multimap可以。 2、multimap中没有[ ]。因为它的key和value是一对多的关系比如上面的苹果那key是苹果但是苹果出现了好几次每一个都有一个value那他到底返回哪一个呢为啥map能返回呢因为在map中每一个key(苹果都对应一个自己的value,所以每次返回一个value.但是multimap是一个key有好几个value. multimap测试 void test7() {multimapstring, string mlp1;mlp1.insert(make_pair(one, 一));mlp1.insert(make_pair(two, 二));mlp1.insert(make_pair(three, 三));mlp1.insert(make_pair(four, 四));mlp1.insert(make_pair(four, 四));mlp1.insert(make_pair(spring, 五));mlp1.insert(make_pair(spring, 五));for (auto e : mlp1){cout e.first : e.second endl;} } int main() {test7(); }
http://www.pierceye.com/news/44116/

相关文章:

  • 公司网站设计规范php做公司网站
  • 网站价格明细表大连模板建站定制网站
  • 佛山哪有网站建设公司开发区高级中学
  • 专业深圳网站建设公司wordpress数据库怎么添加积分
  • 做电影网站不放国内主机广东省阳江网络问政平台
  • ai写作网站wordpress 加密解密
  • 网站建设部工作职能seo分析案例
  • 重庆公司建站django 网站开发视频教程
  • 广东广州网站建设小广告图片
  • 网站建设嗟商文件电商网站前端页面响应式设计
  • 男科医院网站建设公司阿里云gpu服务器租用费用
  • 温州建网站哪家强dede 电商网站模板下载
  • 软件工程和网络工程哪个好wordpress缓存优化
  • 网站建设开发步骤国内自适应网站
  • 西安+美院+网站建设个人备案的网站销售商品
  • 跨境电商知名网站建设自学编程入门先学什么
  • 微信做爰视频网站wordpress 大屏模版
  • 有什么做兼职的网站比较好建筑材料价格查询网站
  • 四川省建设厅网站证旅游电子商务网站的建设包括哪些步骤?网站建设中有哪些常用技术?
  • 营销型网站成功案例建筑材料交易平台
  • ppt成品免费下载的网站网站优化对企业有什么好处
  • 东营网站建设哪家更好邢台网上车管所
  • 金华网站制作价格创意网名昵称大全
  • 网站申请界面怎么做liferay 做网站
  • 触屏网站模板大良营销网站建设好么
  • 租一个服务器建网站多少钱公司做网站的费用入账
  • 南京高端品牌网站建设全球影响力最大的人
  • 网站系统设计目标网站推广的预算
  • 网站建设专家选哪家网站关键字推广
  • 做返利网站能赚钱的高大上企业网站