C++课堂笔记
2017-03-16 14:56
148 查看
Sequential Containers
1.vector list 底层实现方式
push_back()操作
最差复杂度:线性平均复杂度:常量
内存从8开始以指数增长
每增长到满一次拷贝内存一次
栗子:
shrink_to_tit()节省内存但消耗拷贝
如果拷贝到65535 但你要存70000个数据
但pushback就会翻倍增加空间,这时候要使用==shrink_to_tit();==
shrink_to_tit() 开辟刚好的内存
//用vector 实现栈 template <typename T> class Stack { private: vector <T> s; public: void push(T a) { s.push_back(a); } void pop() { s.pop_back(); } unsigned long size() { return s.size(); } T top() { if(s.size()>0){ //return s.back(); //ok return s[s.size()-1]; } } };
2.Predicate(谓词)
栗子:排序时候的cmp()函数【自定义】
//二元谓词的使用 #include <vector> using namespace std; struct Node { double x,y; }; bool cmp(const Node &a, const Node &b) { double ans1=a.x*a.x+a.y*a.y; double ans2=b.x*b.x+b.y*b.y; return ans1<ans2;//必须是严格的小于号 } int main() { vector<Node> a; Node n; for(int i=0; i<3; i++) { cin>>n.x; cin>>n.y; a.push_back(n); } sort(a.begin(),a.end(),cmp); for(int i=0; i<3; i++) { cout<<a[i].x<<a[i].y<<endl; } return 0; }
3.replace_if()[一元谓词]
//写一个myreplace_if() #include <iostream> #include <algorithm> using namespace std; bool unaryPred(int n){ return n<0; } //这也是一种函数,用了运算符重载,--->在用类写的函数 函数就是一种类 class My_predicate{ public: static bool operator()(int a){ return a<0; } }; /** ForwardIt 只能向前走的迭代器,单向链表 为什么UnaryPredicate是class类型的? 一个函数也是个类 若不作为一个模板函数的话 可以这样写 栗子:bool(*P)(T) 是一次参数值为T返回值为bool的一个函数**/ template <typename T,class UnaryPredicate,class ForwardIt> void my_replace_if(I first,I last,UnaryPredicate p,const T& new_value){ for (; first != last; ++first) { if(p(*first)) { *first = new_value; } } } int main() { int a[]={1,-1,2,-2,3,-3}; replace_if(a, a+6,unaryPred, 0); for(int i=0;i<6;i++){ cout<<a[i]; } return 0; }
实现单向链表(用模板)
相关文章推荐
- C++课堂学习笔记
- Po学校C++第二课课堂笔记
- C++课堂笔记
- C++关系运算符号课堂笔记
- 170929 C++ 语言程序设计基础 课堂笔记
- C++课堂笔记0716
- C++课堂笔记——初始化列表
- 课堂笔记: C++ 数组(基础内容)
- C++课堂笔记0711
- c/c++课堂笔记——字符串的基本操作
- C++课堂笔记0706
- c++课堂笔记——函数参数的三种传递方式
- 【课堂笔记】C++程序设计- 第一章-绪论
- 科锐课堂笔记:2017/4/4 初识C++
- C/c++课堂笔记-指针赋值
- C++学习笔记(1)——基类、派生类的对象空间
- C++研究笔记(4)实现遵从性
- (大卫的阅读笔记)More Effective C++ Item 附2:一个auto_ptr的实现实例
- C++ Primer 学习笔记关于练习题6.12
- C++ FAQ阅读笔记[1]