今天看了primer C++的 “动态内存管理类”章节,里面的例子是模拟实现std::vector<std::string>的功能. 照抄之后发现编译不通过,有个库函数调用错误,就参考着自己写了一份简单的int版. 实现思路: 1.初始化时,容器容量为1. 2.往容器添加数据时,如果容器没有放满,就直接放进去. 3.往容器添加数据时,如果容器已经满了: 3.1 申请新的更大的存储空间(2倍) 3.2 把原来的数据复制到新的存储空间 3.3 删除旧的存储空间 3.4放入数据 代码如下: // 1…
这篇文章来自于一次讨论:http://www.devbean.net/2013/01/qt-study-road-2-model-view/#comment-17532.关于究竟是在堆上还是在栈上创建对象,可能很多初学者感到迷惑.我想可以把这部分内容拿出来详细介绍一下.现在,假设你已经清楚什么是堆,什么是栈. 如果需要在堆上创建对象,要么使用new运算符,要么使用malloc系列函数.这点没有异议. 真正有异议的是下面的代码: Object obj; 此时,obj是在栈上分配的吗? 要回答这个问…
Block存储区域 首先,须要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字显示得一样,表明了block的三种存储方式:栈.全局.堆.block对象中的isa的值就是上面当中一个,以下開始说明哪种block存储在栈.堆.全局.block为何是个对象,參考点击打开链接 ------------[要点1]:全局block------------ ● 定义在函数外面的block是…
来源:http://blog.csdn.net/phoebin/article/details/3864590 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了.   Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作…
介绍 使用场景 为什么不是std::array 其他用法 其他类似库 Benchmark 代码关注点 主要类 small_vector small_vector_base 数据结构 InlineStorageType capacity capacity内联在对象中 通过malloc_usable_size获取capacity 将capacity放到堆上 size()相关 capacity()函数 数据内联在对象中 为capacity分配了内存 不为capacity分配空间 扩容 先迁移原有数据还…
直接写作vector<vector<int> > vec在VC++6.0下编译不过改做:    typedef std::vector<int> ROW;    std::vector<ROW> vec;    vec[0][0] = 0;     vec[0][1] = 1; #include <iostream>#include <vector>using namespace std;int main(){     vector&…
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 为了可以使用vector,必须在你的头文件中包含下面的代码: #include <vector> vector属于std命名域的,因此需要通过命名限定,如下完成你的代码: using std::vector; vector<int…
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 为了可以使用vector,必须在你的头文件中包含下面的代码: #include <vector> vector属于std命名域的,因此需要通过命名限定,如下完成你的代码: using std::vector; vector<int…
首先,vector与deque不同,其内存占用空间只会增长,不会减小.比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个.所有空间在vector析构时回收. 1.释放内存:    empty()是用来检测容器是否为空的,clear()可以清空所有元素.但是即使clear(),所占用的内存空间依然如故.如果你需要空间动态缩小,可以考虑使用deque.如果非要用vector,这里有一个办法: 在<effective STL>…
1.代码如下: void output1(int x){ if (x == 10000000) { std::cout << x << std::endl; } }const std::string getCurrentSystemTime(){ auto tt = std::chrono::system_clock::to_time_t (std::chrono::system_clock::now()); struct tm* ptm = localtime(&tt);…