
STL源码剖析深入学习
CourageK
计算所
展开
-
vector的size和capacity改变时空间分配的过程
当增加新元素(s)时,如果超过当时的容量,则容量会扩充至两倍。如果两倍容量仍不足,就扩张至足够大的容量。 以一个例子来说明: #include #include #include using namespace std; int main() { int i; vector iv(2,9); cout<<"size = "<<iv.size()<<endl;原创 2015-04-29 20:26:28 · 620 阅读 · 0 评论 -
memcmp比较两个C风格字符串
/* memcmp example */ #include #include int main () { char buffer1[] = "DWgaOtP12df0"; char buffer2[] = "DWGAOTP12DF0"; int n; n=memcmp ( buffer1, buffer2, sizeof(buffer1) ); if (n>0) p原创 2015-05-06 15:02:59 · 761 阅读 · 0 评论 -
C++内存配置操作和释放操作
这其中的new算式内包含两个阶段操作:(1)调用::operator new 配置内存;(2)调用Foo:Foo()构造对象内容。 delete算式也内含两阶段操作:(1)调用Foo::~Foo()将对象析构;(2)调用::operator delete释放内存。原创 2015-04-28 20:29:12 · 497 阅读 · 0 评论 -
函数指针作为参数(以冒泡排序qsort为例)
函数指针作为参数(以冒泡排序qsort为例)原创 2015-04-28 20:11:03 · 944 阅读 · 0 评论 -
前置和后置自增以及解引用重载函数(++、--、*)
区分前置和后置自增重载函数的区别是是否有参数,以及参数的个数原创 2015-04-28 17:23:55 · 1277 阅读 · 0 评论 -
STL_STATIC_TEMPLATE_MEMBER_BUG学习
#include using namespace std; // template template class testClass { public: static int _data; }; template::_data = 1; template::_data = 2; int main() { cout::_data<<endl; cout::_data<<原创 2015-04-28 09:54:23 · 749 阅读 · 0 评论 -
C++中的内联函数inline总结
原文:http://blog.youkuaiyun.com/coder_xia/article/details/6723387 突然看到C++Primer中讲到,对于vector的一个循环,调用语句:(示例代码i=v.begin()不是很规范,虽然不会出错,客官请将就着看) [cpp] view plaincopy for (int i=v.begin转载 2015-04-28 09:51:14 · 1787 阅读 · 0 评论 -
C++ copy和copy_backward用法实例
#include #include #include using namespace std; int main() { // 数组大小为7 int myInts[] = {10,20,30,40,50,60,70}; // 容器大小为8,里面有8个7 vector myVector(8,7); // 1.将数组中的7个数复制到容器的第一个位置,将覆盖容原创 2015-04-29 21:22:18 · 1700 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之十四:copy_backward
copy_backward,copy_backward算法与copy在行为方面相似,只不过它的复制过程与copy背道而驰,其复制过程是从最后的元素开始复制,直到首元素复制出来。也就是说,复制操作是从last-1开始,直到first结束。这些元素也被从后向前复制到目标容器中,从result-1开始,一直复制last-first个元素。举个简单的例子:已知vector {0, 1, 2, 3, 4,转载 2015-04-29 21:05:08 · 667 阅读 · 0 评论 -
power函数的非递归经典实现(时间复杂度仅仅为logn)
#include using namespace std; template T power(T x,Integer n) { if(n == 0) return 1; if(n == 1) return x; while((n&1) == 0) { x = x*x; n >>= 1; } T result = x原创 2015-05-06 11:24:17 · 1965 阅读 · 0 评论