【STL基础】list】的更多相关文章

deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插入比vecto稍慢. );返回的是一个迭代器.删除使用erase(位置):或者erase(重哪里a,到哪里b);其中a位置包括,而b位置是不包括的,位置一般都是用的迭代器.list反转和排序:lis.reverse(), lis.sort().可以使用distance(a, b);计算a到b的距离.…
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内,所以不需要再引入. 2.STL的组成部分 容器(containers):是一种数据结构容器,使用类模板的方式提供,我们可以方便的进行数据的存储操作. 适配器(adapters):以序列式容器为基础,提供的栈,队列和优先级队列的这种容器. 迭代器(iterators):类似于指针,用来操作容器的对象.…
stl容器:vector,deque,list,map/multimap,set 特殊容器:stack,queue,priority_queue 通用操作 size()  返回当前容器元素数量 empty() 判断容器是否为空 max_size() 返回容器能容纳的最大元素数量 与迭代器有关的操作 begin() 返回一个迭代器,指向第一个元素 end() 指向最后一个元素之后 rbegin() 指向逆向遍历的第一个元素 rend() 指向逆向遍历的最后一个元素之后 元素操作 insert(po…
STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,10,2,45,3,90,4,9,5,8}; sort(vec.begin(), vec.end()); // 默认以 < 排序 // vec: 1 2 3 4 5 8 9 9 10 45 90 bool lsb_less(int x, int y) { return (x%10)<(y%10);…
1 首先看个仿函数的例子 class X { public: void operator()(string str) { // 函数调用运算符,返回类型在operator之前 cout << "Calling functor X with parameter " << str<< endl; } operator string () const { return "X"; } //类型转换函数,返回类型在operator之后 };…
1 迭代器 Iterators 5种迭代器类型 随机访问迭代器: vector, deque, array // 允许的操作 vector<int> itr; itr = itr + 5; // itr往前移5步 itr = itr - 4; if (itr2 > itr1) ... ++itr; // 前置的比后置的快 --itr; 双向迭代器: list, set/multiset, map/multimap // 允许的操作 list<int> itr; ++itr;…
容器种类 序列容器(数组,链表) Vector, deque, list, forward list, array 关联容器(二叉树),总是有序的 set, multiset根据值排序,元素值不能修改 map, multimap根据key排序,键值不能修改 无序容器(hash 表) 无序set/multiset 无序map/multimap 序列容器 Vector vector<int> vec; // vec.size() == 0 vec.push_back(4); vec.push_ba…
为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. 准确,更少的bug * 4. 简洁,可读性好:减少控制流 * 5. 标准化,保证可用 * 6. 是编写库的一个很好的榜样 * 7. 对数据结构和算法有更好的认识 */ /* * STL: Standard Template Library * -- 容器和算法,迭代器是容器和算法之间的桥梁,使容器和…
vector: 1.头文件#include<vector> 2.声明vector对象,vector<int> vec; 3.尾部插入a:vec.push_back(a); 4.使用下标访问元素,cout<<vec[0]<<endl; 5.使用迭代器访问元素: for( vector<int>::iterator it=vec.begin();it!=vec.end();it++)           cout<<*it<<…
#include <iostream> #include <queue> #include <string> using namespace std; #define N_K 10 struct Data_s{ int number; ]; }; typedef struct Data_s Data_t; void makeData(Data_t *d) { int i; ;i<N_K;i++) { d[i].number = i; sprintf(d[i].na…
流 介绍 // cout: 全局ostream对象,(typedef basic_ostream<char> ostream) // <<: ostream& ostream::operator<< (string v); // endl: '\n' + flush { ofstream of("MyLog.txt"); //如果文件不存在,新建 of << "Experience is the mother of wi…
String 构造 string s1("Hello"); string s2("Hello", 3); //s2: Hel string s3(s1, 2); //s3: llo string s4(s1, 2, 2); //s4: ll string s5(5, 'a'); //s5: aaaaa string s6({'a', 'b', 'c'}); //s6: abc 大小 s1="Goodbye" s1.size(), s1.lengt…
已排序数据的算法 Binary search, merge, set operations 每个已排序数据算法都有一个同名的更一般的形式 vector vec = {8,9,9,9,45,87,90}; // 7 items 1. 二分法搜索 // 搜索元素 bool found = binary_search(vec.begin(), vec.end(), 9); vector<int> s = {9, 45, 66}; bool found = includes(vec.begin(),…
修改元素的算法 copy, move, transform, swap, fill, replace, remove vector<int> vec = {9,60,70,8,45,87,90}; // 7 items vector<int> vec2 = {0,0,0,0,0,0,0,0,0,0,0}; // 11 items vector<int>::iterator itr, itr2; pair<vector<int>::iterator, v…
不修改数据的算法 count, min and max, compare, linear search, attribute // 算法中Lambda函数很常用: num = count_if(vec.begin(), vec.end(), [](int x){return x<10;}); bool lessThan10(int x) { return x<10; } vector<int> vec = {9,60,90,8,45,87,90,69,69,55,7}; vecto…
#include <iostream> #include <map> #include <string> using namespace std; #define N_K 10 typedef struct { int a; ]; } Data_t; void makeData(Data_t *d) { int i; ;i<N_K;i++) { d[i].a = i; sprintf(d[i].b,"b=%02d",i); } } int ma…
#include <iostream> #include <vector> #include <numeric> #include <algorithm> #include <string> using namespace std; #define N_K 100 struct Data_s{ int number; ]; bool operator < (const Data_s &obj) const { return numb…
#include <iostream> #include <vector> #include <algorithm> #include <numeric> using namespace std; bool findCondition(int x) { return x%2==0; } //仿函数 template<typename T> struct display{ void operator()(const T &x)const {…
list 构造函数: //default: list<T> l; //空的list //fill: list<T> l(n); //n个元素, 元素默认初始化 list<T> l(n, value); //n个元素值为value //range: list<T> l(first, last); //两个迭代器之间的元素构成 list<T> l(arr, arr + sizeof(arr) / sizeof(T)); //由内置数组构造 //cop…
deque (double-ended queue) 构造函数: //default: deque<T> d; //空的vector //fill: deque<T> d(n); //n个元素的deque,元素默认初始化 deque<T> d(n, value); //n个元素值为value的deque //range: deque<T> d(first, last); //两个迭代器之间的元素构成的deque deque<T> d(arr, a…
vector 构造函数: //default: vector<T> v; //空的vector //fill: vector<T> v(n); //n个元素的vector,元素默认初始化 vector<T> v(n, value); //n个元素值为value的vector //range: vector<T> v(first, last); //两个迭代器之间的元素构成的vector vector<T> v(arr, arr + sizeof(…
近期想对C++的面试题目进行一下更加详细的整理.事实上认真思考一下C++程序猿的面试,我们能够发现对程序猿的能力的考察总是万变不离当中,这些基础知识主要分为五部分:一. C/C++基础知识 二. C/C++的一些特性,如面向对象,内存管理  三. 基础的数据结构编程的知识. 四.stl的一些基础知识.五.网络编程.多线程的知识.异常处理基础知识 本文试图覆盖C/C++面试的每一个知识点,所以对每一个知识点介绍的并不深入.本文适合已经对一下详细知识有所了解的人,我对每一个点都有粗略的解说,假设想深…
STL基础 和 简单的贪心问题 STL(Standard Template Library) 即 标准模板库. 它包含了诸多在计算机科学领域里所常用的基本数据结构和算法.这些数据结构可以与标准算法一起很好的工作. 这里我们主要是为了学会如何使用,如果想了解更多,可以参考<c++ primer 第五版> vector vector 就是一个 不定长数组.它把一些常用的操作 “封装” 在了vector类型内部. vector是一个模板类,所以需要vector<int> a 或者 vec…
//STL基础 //容器 //vector #include "iostream" #include "cstdio" #include "vector"//向量 #include "iterator"//迭代器 #include "numeric"//accunulate()求和算法需要 #include "algorithm"//reverse() using namespace s…
STL - Standard Template Library , 是C++标准里面规定的模板库接口规范,但它只是接口规范,没有规定具体怎么实现. STL是C++标准的一部分,所以每个C++编译器都会至少带一份STL实现.当然除了这些C++编译器带的实现外,还有一些独立的STL实现. GNU STL GCC带的STL实现,包含在libstdc++这个库里面,写C++一旦用到库函数是基本会链接这个库.GNU STL是在SGI的STL基础上开发的. 侯捷的<STL源码剖析>也是围绕SGI的STL进…
于恢复性训练Day2情况如下:https://vjudge.net/contest/234651    先看A题,读懂题意,没有想明白,码完后连续多次WA,后找到错误AC.    对B题,发现其是一个简单的迭代,WA一次(边界条件)后AC.    对H题,发现可以二分做,被精度卡,多次WA后AC.    对I题,发现其二分性质,AC.    对CDEFG,由于以上题目中多次被卡,已无时间读题.    下午,除F题因后缀数组知识已忘记未改外,全部完成. 暴露的问题:    1.基础知识需要补充(手…
以下是OI省选前的数据结构与算法整理,可能还不是很全面.但是已经是全网相对比较全面的了.所有标记为“基础”“进阶”“中级”“提高”的知识为近些年来NOIp考察的内容,需重点掌握. 所有“高级”部分为NOI的考点,省选需要. 不分条的知识点则是省选知识点. 其他的一些算法和数据结构可能就太小众了,就参见Candy?或_rqy的博客,以及TopCoder等网站的教程吧. 每一小项前面的方括号是Markdown里面的checkbox,然而并不能用.悲し. Coder必备类 [ ] LaTeX [ ]…
洛谷 P1059 明明的随机数 洛谷传送门 JDOJ 1423: [NOIP2006]明明的随机数 T1 JDOJ传送门 Description 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成"去重"与"排序"的工作. Input…
反射 -在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问.检测和修改它本身状态或行为的一种能力.[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为. 要注意术语“反射”和“内省”(type introspection)的关系.内省(或称“自省”)机制仅指程序在运行时对自身信息(称为元数据)的检测:反射机制不仅包括要能在运行时对程序自身信息进行检测,还要求程序能进一步根据这些信息改变程序状态或结构. C++的反射 C++的标准语法是不提供反射的特性的,不…
编写高效程序的艺术 零.序言 第一部分:性能基础 一.性能和并发性介绍 二.性能测量 三.CPU 架构.资源和性能 四.内存架构和性能 五.线程.内存和并发 第二部分:高级并发 六.并发和性能 七.并发的数据结构 八. C++ 中的并发 九.高性能 C++ 十.C++ 中的编译器优化 十一.未定义的行为和性能 十二.性能设计 十三.答案 Code::Blocks 和 C++ 应用开发 零.前言 一.Code::Blocks 入门 二.Code::Blocks 应用开发 三.Code::Block…