Eigen库笔记整理(一)
首先熟悉Eigen库的用途,自行百度。
引入头文件:
// Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include <Eigen/Dense>
定义变量:
Eigen 中所有向量和矩阵都是Eigen::Matrix,它是一个模板类。
它的前三个参数为:数据类型,行,列
Eigen 通过 typedef 提供了许多内置类型,不过底层仍是Eigen::Matrix
例如:
Eigen::Matrix<, > matrix_23; // 声明一个2*3的float矩阵 Eigen::Vector3d v_3d; //Vector3d 实质上是 Eigen::Matrix<double, 3, 1>Eigen::Matrix3d matrix_33 ;//Matrix3d 实质上是 Eigen::Matrix<double, 3, 3>
初始化:
matrix_33 = Eigen::Matrix3d::Zero(); //初始化为零 matrix_23 << , , , , , ; //输入数据(初始化)matrix_33 = Eigen::Matrix3d::Random(); // 随机数矩阵
访问数据:
cout <<matrix_23 << endl; // 输出
// 用()访问矩阵中的元素
; i<; i++) {
; j<; j++)
cout<<matrix_23(i,j)<<"\t";
cout<<endl;
}
矩阵的乘法:
注意:
1、在Eigen里不能混合两种不同类型的矩阵,Eigen不会帮我们自动类型转换。我们需要自己进行显示转换。
如果我们不显式的进行类型转换,
Eigen::Matrix<, > result_wrong_type = matrix_23 * v_3d;
则报错如下:(有时候编译器就是这么不友好的提示一堆错误,也不直接告诉你是因为类型不对,摊手┑( ̄Д  ̄)┍)
/home/wy/workdir/slambook/ch3/useEigen/build> make -j2
Scanning dependencies of target eigenMatrix
[ %] Building CXX object CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o
In file included :,
:
/usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, Eigen::DenseShape, Eigen::DenseShape>’:
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, > >’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/Product.h::: error: no type named ‘ReturnType’ in ‘struct Eigen::internal::scalar_product_traits<float, double>’
typedef typename scalar_product_traits<typename Lhs::Scalar, typename Rhs::Scalar>::ReturnType Scalar;
^
In file included :,
:
/usr/include/eigen3/Eigen/src/Core/DenseBase.h: In instantiation of ‘, >, Eigen::Matrix<, >, > >’:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: required , >, Eigen::Matrix<, >, > >’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::operator*;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::operator/;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::derived;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::const_cast_derived;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::rows;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::cols;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::size;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::rowIndexByOuterInner;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::colIndexByOuterInner;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::coeff;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::coeffByOuterInner;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::operator();
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::operator[];
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::x;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::y;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::z;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::w;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::stride;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::innerStride;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::outerStride;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::rowStride;
^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope
using Base::colStride;
^
In file included :,
:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h: In instantiation of ‘, >, Eigen::Matrix<, >, > >’:
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::derived’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::derived;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::const_cast_derived’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::const_cast_derived;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::rows’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::rows;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::cols’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::cols;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::size’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::size;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::coeff’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::coeff;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::coeffRef’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::coeffRef;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::eval’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::eval;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::operator*=;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::operator/=;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::operator*;
^
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’
using Base::operator/;
^
In file included :,
:
/usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, , Eigen::Dense>’:
/usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::ProductImpl<Eigen::Matrix<, >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::derived’ , >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka , >, Eigen::Matrix<, >, , >}’
using Base::derived; \
^
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’
EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
^
/usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_DENSE_PUBLIC_INTERFACE’
EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
^
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::ProductImpl<Eigen::Matrix<, >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::const_cast_derived’ , >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka , >, Eigen::Matrix<, >, , >}’
using Base::const_cast_derived;
^
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’
EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
^
/usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_DENSE_PUBLIC_INTERFACE’
EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
^
/usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, >’:
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, >::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::derived’ , >, Eigen::Matrix<, >, >::Base {aka , >, Eigen::Matrix<, >, , >}’
using Base::derived; \
^
/usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’
EIGEN_GENERIC_PUBLIC_INTERFACE(Product)
^
/usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, >::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::const_cast_derived’ , >, Eigen::Matrix<, >, >::Base {aka , >, Eigen::Matrix<, >, , >}’
using Base::const_cast_derived;
^
/usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’
EIGEN_GENERIC_PUBLIC_INTERFACE(Product)
^
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp: In function ‘int main(int, char**)’:
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: error: conversion , >, Eigen::Matrix<, >, >’ to non-scalar type ‘Eigen::Matrix<, >’ requested
Eigen::Matrix<, > result_wrong_type = matrix_23 * v_3d;
^
CMakeFiles/eigenMatrix.dir/build.make:: recipe for target 'CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o' failed
make[]: *** [CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o] Error
CMakeFiles/Makefile2:: recipe for target 'CMakeFiles/eigenMatrix.dir/all' failed
make[]: *** [CMakeFiles/eigenMatrix.dir/all] Error
Makefile:: recipe for target 'all' failed
make: *** [all] Error
*** Failure: Exit code ***
我们应该显式转换,代码如下:
Eigen::Matrix<, > result = matrix_23.cast<double>() * v_3d;
2、在Eigen中,不能搞错矩阵的维度。(这是线性代数中矩阵相乘的基本前提要求)
Eigen::Matrix<, > result_wrong_dimension = matrix_23.cast<double>() * v_3d;
维度不对的时候,报错如下:
/home/wy/workdir/slambook/ch3/useEigen/build> make -j2
Scanning dependencies of target eigenMatrix
[ %] Building CXX object CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o
In file included :,
:
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘, , , , >; Src = Eigen::Product<Eigen::CwiseUnaryOp<Eigen::, > >, Eigen::Matrix<, >, >; Func = Eigen::internal::assign_op<double>]’:
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h::: required , > >, Eigen::Matrix<, >, >; Derived = Eigen::Matrix<, , , , >]’
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h::: required , > >, Eigen::Matrix<, >, >; Derived = Eigen::Matrix<, , , , >]’
/usr/include/eigen3/Eigen/src/Core/Matrix.h::: required , > >, Eigen::Matrix<, >, >; _Scalar = ; ; ; ; ]’
/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h::: error: ‘YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES’ is not a member of ‘Eigen::internal::static_assertion<false>’
if (Eigen::internal::static_assertion<static_cast<bool>(CONDITION)>::MSG) {}
^
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h::: note: in expansion of macro ‘EIGEN_STATIC_ASSERT’
EIGEN_STATIC_ASSERT( \
^
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h::: note: in expansion of macro ‘EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE’
EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(ActualDstTypeCleaned,Src)
^
CMakeFiles/eigenMatrix.dir/build.make:: recipe for target 'CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o' failed
make[]: *** [CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o] Error
CMakeFiles/Makefile2:: recipe for target 'CMakeFiles/eigenMatrix.dir/all' failed
make[]: *** [CMakeFiles/eigenMatrix.dir/all] Error
Makefile:: recipe for target 'all' failed
make: *** [all] Error
*** Failure: Exit code ***
四则运算:
matrix_33.transpose() // 转置 matrix_33.sum() // 各元素和 matrix_33.trace() // 迹 *matrix_33 // 数乘 matrix_33.inverse() // 逆 matrix_33.determinant() // 行列式
求解方程:
cout<<"我们求解 matrix_NN * x = v_Nd 这个方程"<<endl;
// N的大小在前边的宏里定义(N=50),它由随机数生成
// 直接求逆自然是最直接的,但是求逆运算量大 x = matrix_NN.inverse()*v_Nd;
Eigen::Matrix< double, MATRIX_SIZE, MATRIX_SIZE > matrix_NN;
matrix_NN = Eigen::MatrixXd::Random( MATRIX_SIZE, MATRIX_SIZE );
Eigen::Matrix< > v_Nd;
v_Nd = Eigen::MatrixXd::Random( MATRIX_SIZE, );
clock_t time_stt = clock(); // 计时
// 直接求逆
Eigen::Matrix<> x = matrix_NN.inverse()*v_Nd;
cout <<* (clock() - time_stt)/(double)CLOCKS_PER_SEC << "ms"<< endl;
// 通常用矩阵分解来求,例如QR分解,速度会快很多
time_stt = clock();
x = matrix_NN.colPivHouseholderQr().solve(v_Nd);
cout <<* (clock() - time_stt)/(double)CLOCKS_PER_SEC <<"ms" << endl;
运行如下:
我们求解 matrix_NN * x = v_Nd 这个方程 time use .65ms time use .102ms
Eigen库笔记整理(一)的更多相关文章
- Eigen库笔记整理(二)
Eigen/Geometry 模块提供了各种旋转和平移的表示 旋转矩阵直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eigen: ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- JS第一周学习笔记整理
目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...
- NPM 学习笔记整理
NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...
- Three入门学习笔记整理
一.官方网站:https://threejs.org 二.关于Three.js 三.开始 四.实例 基本结构 结果 五.概念 坐标系 场景 相机 灯光 3D模型 六.简单动画 七.交互控制 结束 # ...
- 最全mysql笔记整理
mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...
- 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1
注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
随机推荐
- the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
the largest value you actually can transmit between the client and server is determined by the amoun ...
- 容器ArrayList原理(学习)
一.概述 动态数组,容量能动态增长,元素可以为null,用数组存储,非线程同步(vector线程同步) 每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小,自动增长(默 ...
- POJ 2977 Box walking 长方体表面两点距离
POJ2977 小学生的考试题,暴力得出O(1)的解法 #include<iostream> #include<cstdio> #include<cstdlib> ...
- bzoj3262 陌上花开——CDQ分治
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 第一道CDQ分治题! 看博客:https://www.cnblogs.com/Narh ...
- Java中try,catch,finally的用法
Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch 运行流程:运行到try ...
- COCI2012 TOY
有m种物品,n个箱子之中装着若干物品.问取出一些箱子后,所有m种物品都被选出的方案数. m<=20,n<=106 这道题很妙啊 深刻地利用了容斥 看到n=20,我们就想到了状压和容斥. 怎 ...
- springboot开发过程中的小坑(持续更新)
1. 启动的Application必须放到一个package下面,如下: package com.example.kikidemo; import org.springframework.boot.S ...
- System.Drawing.Color的几种使用方法
System.Drawing.Color cl = Color.Red; System.Drawing.Color cl = Color.FromArgb(255,0,0); ...
- bzoj 2015: [Usaco2010 Feb]Chocolate Giving【spfa】
因为是双向边,所以相当于两条到1的最短路和,先跑spfa然后直接处理询问即可 #include<iostream> #include<cstdio> #include<q ...
- ECMA里面的操作符,
ECMA里面的操作符,描述了一组操作于数据值的操作符,包括算数操作符.位操作符,关系操作符和相等操作符,ECMAscript操作符与之不同的是,他们能够使用于很多值,例如字符串.数字值.布尔值.甚至对 ...