size

转:C++内存池

半城伤御伤魂 提交于 2020-02-13 08:17:30
#ifndef _MEMPOOL_H_ #define _MEMPOOL_H_ /* 本类封装了一个内存池,采用模板类, 模板参数就是内存池中分配的对象类型 本类主要用链表来实现,适用于固定大小的内存块分配 */ #include <vector> using std::vector; template<typename T> class CMemPool { struct _MemNode { _MemNode *pPrev; char data[sizeof(T) - sizeof(_MemNode*)]; }; struct _MemBlock { _MemBlock *pPrev; _MemNode *pNode; }; _MemBlock *m_pBlockHeader; //大内存块链表头指针 _MemNode *m_FreeNodeHeader; //空闲的小块头指针 int m_BlockSize; //当前小内存块数量 private: void AllocBlocks(); //分配内存块 void ReallocBlocks(); //扩大内存池大小 public: //构造函数,nInitSize为初始内存块数 CMemPool(int nInitSize = 128) : m_BlockSize(nInitSize), m_pBlockHeader

iOS 水波效果

Deadly 提交于 2020-02-11 00:59:05
将水波效果放在子视图上,主控制器只负责加载 #import "WaveProgress.h" @interface WaveProgress () @property (nonatomic,assign)CGFloat yHeight;/**< 当前进度对应的y值,由于y是向下递增,所以要注意 */ @property (nonatomic,assign)CGFloat offset;/**< 偏移量,决定了这个点在y轴上的位置,以此来实现动态效果*/ @property (nonatomic,strong)CADisplayLink * link;/**< 定时器*/ @property (nonatomic,strong)CAShapeLayer * waveLayer;/**< 水波的layer */ @property (nonatomic,assign)CGFloat speed;/**< 波动的速度*/ @property (nonatomic,strong)UIColor * waveColor; @property (nonatomic,assign)CGFloat waveHeight; @end @implementation WaveProgress - (instancetype)initWithFrame:(CGRect)frame { self =

自定义实现LinkList

旧时模样 提交于 2020-02-09 21:25:18
linkList底层是双向链表,其增加,删除速度快,但是查找慢。 增加新节点时,因为插入是有序的,所以应该进行尾插。 //添加元素 public boolean add(T e) { Node newNode = new Node(e,null,null); if(size == 0){ tail = head = newNode; }else { //新节点的直接前驱 newNode.pre = tail; //新节点的直接后继 newNode.next = null; //更新tail结点 tail.next = newNode; tail = newNode; } size++; return true; }   获取元素: public T get(int index){ Node tmp = head; if(index<0 || index>=size){ throw new RuntimeException("参数不合法"+index); }else { for (int i = 0; i < index ; i++) { tmp = tmp.next; } } return (T)tmp.data; } 链表的查找效率低,为了提高查找的效率,分两部分进行查找元素,当将元素的链表分为两部分,当查找的元素靠近头,从头开始查找,反之从尾部开始查找。 改进如下: /** *

pytorch中tensor的基本维度变换

旧巷老猫 提交于 2020-02-08 04:44:58
直接从代码中学习tensor的一些维度变换操作: import torch torch . manual_seed ( 2020 ) x = torch . rand ( 1 , 2 , 3 ) print ( x ) # tensor([[[0.4869, 0.1052, 0.5883], # [0.1161, 0.4949, 0.2824]]]) print ( x . view ( - 1 , 3 ) . size ( ) ) # torch.Size([2, 3]) print ( '\ntranspose:' ) print ( torch . transpose ( x , 0 , 1 ) ) print ( x . transpose ( 0 , 1 ) . size ( ) ) # torch.Size([2, 1, 3]) print ( x . transpose ( 1 , 2 ) . size ( ) ) # torch.Size([1, 3, 2]) # transpose要指明待交换的维度 print ( '\ntorch.cat:' ) y = torch . rand ( 1 , 1 , 3 ) print ( torch . cat ( ( x , y ) , dim = 1 ) . size ( ) ) # torch.Size([1, 3, 3

最小路径和

て烟熏妆下的殇ゞ 提交于 2020-02-06 20:23:08
最小路径和 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。 代码 递归暴力法 int calculate(vector<vector<int>>& grid, int i, int j) { if (i == grid.size() || j == grid[0].size()) return INT_MAX; if (i == grid.size() - 1 && j == grid[0].size() - 1) return grid[i][j]; return grid[i][j] + min(calculate(grid, i + 1, j), calculate(grid, i, j + 1)); } int minPathSum(vector<vector<int>>& grid) { return calculate(grid, 0, 0); } 二维数组法 int calculate(vector<vector<int>>& grid,int i,int j) { int **dp = new int*[grid.size()];

leetcode-23 合并K个排序链表

风格不统一 提交于 2020-02-06 05:17:54
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入 : [ 1->4->5, 1->3->4, 2->6 ] 输出 : 1->1->2->3->4->4->5->6 方法一: 使用vector数组存多个链表的所有节点,进行从小到大的排序,完成后再进行元素的指向,从第一个元素指向最后一个元素 bool cmp ( ListNode * l1 , ListNode * l2 ) { return l1 -> val < l2 -> val ; } ListNode * mergeKLists ( vector < ListNode * > & lists ) { vector < ListNode * > node_vec ; for ( int i = 0 ; i < lists . size ( ) ; ++ i ) { while ( lists [ i ] ) { node_vec . push_back ( lists [ i ] ) ; lists [ i ] = lists [ i ] -> next ; } } if ( node_vec . size ( ) == 0 ) { return NULL ; } //从小到大排序 std : : sort ( node_vec . begin ( ) , node_vec . end (

575. 分糖果

╄→гoц情女王★ 提交于 2020-02-05 00:18:27
解题思路: 1.利用set集合不可重复性的特点,遍历数组,将遍历的元素存入set中 2.set的大小size就是糖果的种类,数组长度的一半就是每人应该得到的糖果数avg 3.当size>=avg时,即糖果的种类大于等于每人应该得到的糖果数,则妹妹可以获得的最大糖果的种类数是avg 4.当size<avg时,即糖果的种类小于每人应该得到的糖果数,则妹妹可以获得的最大糖果的种类数是size 代码实现 class Solution { public int distributeCandies(int[] candies) { Set<Integer> set=new HashSet<>(); for(int val:candies){ set.add(val); } //糖果的种类 int size=set.size(); //每人分得的糖果数 int avg=candies.length>>1; if(size>=avg){ return avg; } return size; } } 来源: CSDN 作者: 我就是个渴望成长的小菜鸡 链接: https://blog.csdn.net/junjunjiao0911/article/details/104174675

Qt浅谈之总结(整理)

拈花ヽ惹草 提交于 2020-02-04 17:06:02
https://www.cnblogs.com/lsgxeva/p/7811275.html 一、简介 QT的一些知识点总结,方便以后查阅。 二、详解 1、获取屏幕的工作区的大小 { //获取屏幕分辨率 qDebug()<< "screen width:"<<QApplication::desktop()->width(); qDebug()<< "screen height:"<<QApplication::desktop()->height(); //下面方法也可以 qDebug()<< "screen width:"<<qApp->desktop()->width(); qDebug()<< "screen height:"<<qApp->desktop()->height(); //获取客户使用区大小 qDebug()<< "screen avaliabe width:"<<QApplication::desktop()->availableGeometry().width(); qDebug()<< "screen avaliabe heigth:"<<QApplication::desktop()->availableGeometry().height(); //获取应用程序矩形大小 qDebug()<< "application avaliabe width:"<

Character set encodings and storage size factors

北慕城南 提交于 2020-02-02 16:01:33
问题 For Oracle, is there a matrix/tabulated info on storage allocations given various character encoding. For example: size_of_col_in(AL32UTF8) == 4 * size_of_col_in(WE8ISO8859P1) I am interested in that factor value 4 回答1: Unless you are only interested in the maximum change, your example is not correct. AL32UTF8 is a variable-length character set. Speaking in general terms, any character that is in the US7ASCII character set will take 1 byte, European characters generally require 2 bytes,

C++ explicit关键字详解

社会主义新天地 提交于 2020-02-02 09:06:40
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子: class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_pstr; int _size; CxString(int size) { _size = size; // string的预设大小 _pstr = malloc(size + 1); // 分配string的内存 memset(_pstr, 0, size + 1); } CxString(const char *p) { int size = strlen(p); _pstr = malloc(size + 1); // 分配string的内存 strcpy(_pstr, p); // 复制字符串 _size = strlen(_pstr); } // 析构函数这里不讨论, 省略... }; // 下面是调用: CxString string1(24); // 这样是OK的, 为CxString预分配24字节的大小的内存 CxString