const

十二、 C++特性之 杂合

一笑奈何 提交于 2020-03-06 23:50:02
static_assert和 type traits static_assert提供一个编译时的断言检查。如果断言为真,什么也不会发生。如果断言为假,编译器会打印一个特殊的错误信息。 template < typename T, size_t Size> class Vector { static_assert(Size < 3, "Size is too small"); T _points[Size]; }; int main() { Vector< int, 16> a1; Vector< double, 2> a2; return 0; } error C2338: Size is too small see reference to class template instantiation 'Vector<T,Size>' being compiled with [ T= double, Size=2 ] static_assert和type traits一起使用能发挥更大的威力。type traits是一些class,在编译时提供关于类型的信息。在头文件<type_traits>中可以找到它们。这个头文件中有好几种 class: helper class,用来产生编译时常量。type traits class,用来在编译时获取类型信息,还有就是type

(转)矩阵快速幂模板

隐身守侯 提交于 2020-03-06 15:24:00
大佬博客: https://blog.csdn.net/baidu_23081367/article/details/52347256 代码: const int mat_size = 5;//矩阵大小,需要乘以2,为了&运算的时候需要二倍的矩阵大小 const int mod=1e9+7; struct Matrix { long long a[mat_size][mat_size]; int x, y;//长宽 Matrix() //返回0矩阵 { memset(a,0,sizeof(a)); } Matrix(int x,int y)//返回0矩阵,并且x,y赋值 { this->x = x; this->y = y; memset(a, 0,sizeof(a)); } Matrix(int n) //返回n*n的【单位矩阵】 { this->x=n; this->y=n; memset(a,0,sizeof(a)); for (int i = 0; i <n;++i) a[i][i]=1; } Matrix operator * (const Matrix &B)//矩阵乘法 { Matrix tmp; for (int i = 0; i < x; ++ i) for (int j = 0; j < B.y; ++ j) { tmp.a[i][j] = 0; for

C#:实现窗口的淡入淡出效果

∥☆過路亽.° 提交于 2020-03-06 13:36:05
来自: http://baike.baidu.com/view/1080291.htm 使用函数 :AnimateWindow 说明 : 该函数能在显示与隐藏窗口时能产生特殊的效果。 函数原型 :    BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);    BOOL AnimateWindow(DWORD dwTime,DWORD dwFlags); 参数说明 : hWnd :指定产生动画的窗口的句柄。 dwTime :指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。 dwFags :指定动画类型。这个参数可以是一个或多个下列标志的组合。标志描述: AW_SLIDE :使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。 AW_ACTIVATE :激活窗口。在使用了AW_HIDE标志后不要使用这个标志。 AW_BLEND :使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。 AW_HIDE :隐藏窗口,缺省则显示窗口。 AW_CENTER :若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。 AW_HOR_POSITIVE :自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW

使用C#实现WinForm窗体的动画效果

依然范特西╮ 提交于 2020-03-06 13:34:33
using System.Runtime.InteropServices;  public class Win32  {   public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口   public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口   public const Int32 AW_VER_POSITIVE = 0x00000004; // 从上到下打开窗口   public const Int32 AW_VER_NEGATIVE = 0x00000008; // 从下到上打开窗口   public const Int32 AW_CENTER = 0x00000010; //若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。   public const Int32 AW_HIDE = 0x00010000; //隐藏窗口,缺省则显示窗口。   public const Int32 AW_ACTIVATE = 0x00020000; //激活窗口。在使用了AW_HIDE标志后不要使用这个标志。   public const Int32 AW_SLIDE = 0x00040000; //使用滑动类型

结构体的三种排序方式

瘦欲@ 提交于 2020-03-06 12:49:53
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 const int N = 1e5; 6 7 struct node{ 8 int key; 9 int value; 10 //方法一 重载小于运算符 11 bool operator < (const node &rhs) const{ 12 return key < rhs.key || key == rhs.key && value > rhs.value; 13 } 14 }st[N]; 15 16 //方法二 手写cmp 17 bool cmp(const node &a, const node &b){ 18 return a.key < b.key || a.key == b.key && a.value > b.value; 19 } 20 21 //方法三 定义一个结构体,重载()运算符 让他类似于一个函数的调用 22 struct cmp2{ 23 24 bool operator () (const node &a, const node &b) const{ 25 return a.key < b.key || a.key == b.key && a.value > b.value; 26 } 27 }; 28 29 int main(){ 30

收录一些刷题相关的cpp的feature

拟墨画扇 提交于 2020-03-06 09:02:55
收录一些会用到的一些cpp的feature std::initializer_list Before vector<int> v; // python: v = [1,2,3,4] v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); After: vector<int> v{1, 2, 3, 4}; initializer_list<int> l = {1, 2, 3, 5}; vector<int> v(l); // copy l into v auto Before set<int> st; typedef set<int>::iterator IT; typedef set<int>::const_iteratore CIT; for (IT it=st.begin(); it != s.end(); ++it) // const begin const end for (CIT cit=st.cbegin(); it != s.cend(); ++it) After for (auto it =st.begin(); it != s.end(); ++it) for (auto cit=st.cbegin(); it != s.cend(); ++it) auto it = st.find(x);

《C++ Primer(第五版)》第六章笔记

旧城冷巷雨未停 提交于 2020-03-06 08:53:59
6.1 函数基础   通过 调用运算符 来执行函数。函数的调用完成两项工作:用实参初始化函数的形参;将控制权转移给被调用函数。   当遇到一条 return 语句时函数结束执行过程。return 也完成两项工作:返回 return 语句中的值;将控制权从被调用函数转移回主调函数。 形参和实参   形参出现在函数定义的地方,实参出现在函数调用的地方。实参是形参的初始值,实参的类型必须与对应的形参类型相匹配。   任意两个形参都不能同名,而且函数最外层作用域中的局部变量也不能使用与函数形参一样的名字(外层局部变量被内部形参隐藏)。 6.1.1 局部对象   对象的 生命周期 是程序执行过程中该对象存在的一段时间。   形参和函数体内部定义的变量统称为 局部变量 。局部变量会 隐藏 在外层作用域中同名的其他所有声明中。   只存在于块执行期间的对象称为 自动对象 。    局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁。内置类型的未初始化局部变量产生未定义的值,内置类型的局部静态变量初始化(值初始化)为 0。 6.2 参数传递   形参的类型决定了形参和实参交互的方式。当形参是引用类型时,其对应的实参被 引用传递 或函数被 传引用调用 ;当实参的值被拷贝给形参时,实参被 值传递 或函数被 传值调用 。 6.2.1 传值参数  

C++学习笔记(八)----表(list)的实现

不问归期 提交于 2020-03-06 07:17:29
接下来,我们根据《数据结构和算法分析 C++描述》中图3-12至3-20的代码,继续回顾类的有关知识. 代码如下: 1 template<typename Object> 2 class List 3 { 4 private : 5 struct Node 6 { 7 Object data; 8 Node *prev; 9 Node *next; 10 11 Node( const Object & d = Object( ), Node *p = NULL, Node *n = NULL ) 12 : data( d ), prev( p ), next( n ) { } 13 }; 14 15 public : 16 class const_iterator 17 { 18 public : 19 const_iterator( ) : current( NULL ) 20 { } 21 22 const Object & operator * ( ) const 23 { return retrieve( ); } 24 25 const_iterator & operator ++ ( ) 26 { 27 current = current->next; 28 return * this ; 29 } 30 31 const_iterator operator ++ (

【快速复习】Node.js中的fs模块的使用

时光怂恿深爱的人放手 提交于 2020-03-06 05:28:05
JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。 fs 模块提供了非常多的接口,这里主要说一下一些常用的接口。 1.常用API快速复习 fs.stat 检测是文件还是目录 const fs = require ( 'fs' ) fs . stat ( 'hello.js' , ( error , stats ) => { if ( error ) { console . log ( error ) } else { console . log ( stats ) console . log ( `文件: ${ stats . isFile ( ) } ` ) console . log ( `目录: ${ stats . isDirectory ( ) } ` ) } } ) fs.mkdir 创建目录 const fs = require ( 'fs' ) fs . mkdir ( 'logs' , error => { if ( error ) { console . log ( error ) } else { console . log ( '目录创建成功!' ) } } ) fs.rmdir 删除目录 const fs = require (