STL的注意事项】的更多相关文章

template是一个泛化的:使用template时开始仅仅是声明,具体的例如:k<int> a;叫做实例化显式实例化:类似k<int>a:明确指出哪种类型:隐式实例化:类似k<>a;没有说明类型,有编译器自动匹配特化:(个人认为就是自己制定template 中T的作用) 操作符重载: 复习stl:vector: list不适合查找;顺序容器和关联容器中都有的成员函数:erase:删除一个或多个元素clear:删除所有元素vecter,deque支持随机访问,支持迭代器…
Intro 简单整理了一些关于 C++ STL 的注意点. 虽然大多数东西可以手写不过某些东西最好少造轮子,善用 STL 可以节约很多考场时间,简化实现. 当然是时空限制和功能足够的前提下. Tips 开 bool 数组是如果发现空间不是很对可以考虑 std::bitset 或 std::vector<bool>.不过仅仅是单次访问 std::bitset 没有 bool 数组快. 常数较大的一些 STL 容器:std::stack/std::queue/std::deque/std::lis…
关于map是什么,这里就不多叙述了. 直接正题,常用的map插入操作有三种方法:通过pair<key_type,value_type>.通过value_type插入数据.还有一种类似于数组的形式插入数据,关键字就是数组下标. 关于三种插入方式的区别:前两者的效果是一样的,但是由于数据集合唯一性,如果一个key对应的value上有值的话,那么再次往这个key上插入一个新的value会失败, 可以使用pair模板类型进行测试. 由于map是有序的,所以查找的话可以直接使用key进行查找,比如说fi…
[1]提前分配足够空间以免不必要的重新分配和复制代价 关于vector容器重新分配和复制及析构释放的代价,请参见随笔<STL容器之vector>. 应用示例对比代码如下: #include <vector> #include <ctime> #include <iostream> using namespace std; // 计时器 // 调用clock()函数实现,返回毫秒(ms)数 class TestProgramRunTimer { enum {…
Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.  You are to find all the hat’s words in a dictionary.  InputStandard input consists of a number of lowercase words, one per l…
1.两个迭代器组成的区间是前闭后开的 2.如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效 http://blog.csdn.net/hsujouchen/article/details/8987233 3.迭代器指向的内容为空的时候(如已经指向end的时候)是不能访问值的,否则运行会崩溃(报错内容iterator not dereferencable) string str_in; cin>>str_in; string ::iterator it; it=str_in…
关于算法中的比较函数 #include<iostream> #include<algorithm> using namespace std; int compare(double a,double b){ return a>b; } int main(){ ]={,,,,,}; ]={,,,,,}; sort(a,a+,compare); sort(b,b+); ;i<;i++) cout<<a[i]<<" "; cout&l…
#include<iostream> using namespace std; #include"vector" #include"algorithm" // void PrintV(vector <int > &temp) { for (vector<int>::iterator it = temp.begin(); it != temp.end(); it++) { cout << *it <<…
1. pop是不返回元素的.因为不能返回引用,只能返回实例.而这个实例是在函数里面初始化的,所以必须在外面再赋值和初始化.而如果实例复制失败,会产生丢失. 2. 而top是可以返回引用的.实际上,返回的的确是引用. mystack.top() -= 5; 所以,也是可以用引用接收top()的返回值的. 3. pop()在空的时候,会抛出异常.但是这个异常无法捕获,我用 catch(...) 都捕获不了.应该是只有throw出来的才能捕获.…
今天写了个题,结果碰巧re了,我眉头一皱发现事情并不简单. 原来我之前的comp写的都是错的. bool cmp(milkman a,milkman b) { return a.price<=b.price; }//原来的 bool cmp(man a,man b) { if(a.price==b.price)return a.amt>b.amt; return a.price<b.price; }//改动后的 参考:http://blog.sina.com.cn/s/blog_532f…