`
xinyiwust
  • 浏览: 13503 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
1.deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。 2.deque的size()函数是常量级的: size_type size() const { return _M_finish - _M_start; } 3.与vector相比较,deque没有内存再分配的消耗(vector在内存不够时会调 ...
1.list中有一个unique函数,这个函数容易给人造成一种错觉:直接调用它就可以移除list中的重复元素。其实不然,unique函数实现如下: template <class T, class Alloc> void list<T, Alloc>::unique() { iterator first = begin(); iterator last = end(); if (first == last) return; iterator next = first; while (++next != la ...
1.vector中的size()方法是常数量级的,其中 0 == size()和empty()是等价的; size_type size() const { return size_type(end() - begin()); } bool empty() const { return begin() == end(); } 2.构造函数,若采用默认构造函数,vector的容量为0,在容量不足的情况下会以1、2、4...指数级的增长;如果指定容量和初始值,则构建指定长度和初始值的容器,当容量不足时,将容量翻倍。 #include<iostrea ...
UTF8格式的文本开头的三个字节是-17、-69和-65,主要读取文件或流的前三个字节,然后比对即可: /** * @param byte0 the first byte of file(or stream) * @param byte1 the second byte of file(or stream) * @param byte2 the third byte of file(or stream) * @return return true if file(or stream) is coded by UTF8,else return false */ ...
今天在看java.nio.Buffer的源码时,看到这样一个函数: static void checkBounds(int off, int len, int size) { if ((off | len | (off + len) | (size - (off + len))) < 0) throw new IndexOutOfBoundsException(); } 这是一个边界检查函数,感觉写的非常简洁,只要满足如下条件就抛出IndexOutOfBoundsException: off<0或者len<0或者off+ ...
BufferedInputStream内用有一个很重要的private函数fill(),这个函数的原型如下: [code=&quot;java&quot;]    private void fill() throws IOException {         byte[] buffer = getBufIfOpen(); if (markpos = buffer.length) /* no room left in buffer */     if (markpos &gt; 0) { /* can throw away early part of the buff ...
      今天在使用ScheduledExecutorService的时候,发现scheduleWithFixedDelay和scheduleAtFixedRate的参数都是Runnable,于是想到使用FutureTask封装一下:FutureTask<String> task = new FutureTask<String>(new ComputeTask(1000));         接着在调用scheduleWithFixedDelay的时候就出现错误了,发现call函数只执行了一次,然后就卡住了。。。 随后查看了一下FutureTask的源码,发现执行完 ...
n+1个范围是0~n的数字,找出所有重复的数字,O(n)基础上不用额外空间。 算法思想: 使用数组的值对应数组的下标,出现多对一的则说明重复。 算法:      遍历数组,每次访问前判断数组是否访问过(访问过的会被置为负数);      如果没访问过,则以当前数组的值为数组下标,访问其值:           若为负数,则此元素被访问过,即数组下标在数组值中多次出现,重复;           若非负,则此元素没被访问过,将其标记为访问过(取负值,0取数组长度的负        值);     如果访问过(访问过的数为负数),则再取负为数组下标(如果是数组长度,表明是0),访问其值:   ...
Global site tag (gtag.js) - Google Analytics