当前位置: 首页 > wzjs >正文

怎么做婚恋网站搜索引擎优化的概念

怎么做婚恋网站,搜索引擎优化的概念,英国政府网站建设的特点,做起点说网站的服务器多少钱1. Map 类&#xff1a;内存映射&#xff08;零拷贝操作&#xff09; 核心功能 将现有的 C/C 数组或缓冲区映射为 Eigen 矩阵/向量&#xff0c;不复制数据&#xff0c;直接操作原内存。 模板参数 cpp Map<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>&…

1. Map 类:内存映射(零拷贝操作)

核心功能

将现有的 C/C++ 数组或缓冲区映射为 Eigen 矩阵/向量,不复制数据,直接操作原内存。

模板参数

cpp

Map<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>
  • 参数与 Matrix 一致,通常简化为 Map<MatrixXd>(动态大小)或 Map<Vector3f>(固定大小)。

构造函数与方法
方法/构造函数参数说明功能示例
Map(Scalar* data)data: 原始数组指针映射为一维向量float arr[3]; Map<Vector3f> v(arr);
Map(Scalar* data, Index rows, Index cols)data: 数组指针,rows/cols: 矩阵尺寸映射为矩阵double buf[4]; Map<Matrix2d> m(buf, 2, 2);
data()返回原始指针float* ptr = v.data();
注意事项
  • 内存对齐:若原始数据未对齐(如动态分配的数组),需使用 Eigen::Unaligned 标志:

    cpp

    Map<Matrix3f, Unaligned> m(ptr);

2. Block 类:子矩阵操作

核心功能

提取矩阵的某一块区域(子矩阵),返回一个视图(不复制数据)。

主要方法
方法参数说明返回值/功能示例
block(Index startRow, Index startCol, Index blockRows, Index blockCols)startRow/startCol: 起始位置,blockRows/blockCols: 子块大小动态大小子块MatrixXd B = A.block(1, 1, 2, 2);
block<BlockRows, BlockCols>(startRow, startCol)模板参数:子块固定大小,startRow/startCol: 起始位置固定大小子块(编译时优化)auto C = A.block<2,2>(0, 0);
topLeftCorner(rows, cols)提取左上角子块同 blockMatrix3f D = A.topLeftCorner(3, 3);
middleRows(startRow, numRows)提取中间连续多行行子矩阵VectorXd seg = v.middleRows(2, 3);
变体方法
  • 列/行操作
    col(j).segment(start, length)(列向量的子段)、row(i).head(n)(行的前 n 元素)。

3. 视图类(TransposeDiagonal 等)

核心功能

通过视图(View)操作原矩阵的特定结构(如转置、对角元素),不复制数据

常用视图类
类/方法参数说明功能示例
transpose()返回转置视图MatrixXd AT = A.transpose();(注意:赋值会触发复制)
adjoint()返回共轭转置视图MatrixXcf AH = A.adjoint();
diagonal()可指定偏移量(默认 0)返回对角线的向量视图VectorXd diag = A.diagonal();
diagonal<Offset>()Offset: 对角线的偏移(正数=上对角线,负数=下对角线)返回指定对角线的视图VectorXd sup_diag = A.diagonal<1>();
triangularView<Mode>()ModeUpperLowerStrictlyUpper 等返回三角矩阵视图auto L = A.triangularView<Lower>();
视图的赋值与计算
  • 视图可直接参与运算,但若需保存结果,需赋值给具体矩阵:

    cpp

    MatrixXd B = A.transpose() * A;  // 合法:触发实际计算
    auto C = A.transpose();          // C 仍是视图,依赖 A 的生命周期!

4. 代码示例

cpp

#include <Eigen/Dense>
using namespace Eigen;// Map 示例
float data[] = {1, 2, 3, 4};
Map<Matrix<float, 2, 2, RowMajor>> mat_map(data);  // 按行映射
mat_map(1, 1) = 5;  // 修改原数组 data[3] = 5// Block 示例
MatrixXd A(4, 4);
A.setRandom();
MatrixXd B = A.block(1, 1, 2, 2);  // 提取 2x2 子矩阵
A.topLeftCorner(2, 2).setZero();   // 将左上角置零// 视图示例
Vector3d v(1, 2, 3);
MatrixXd M = v * v.transpose();     // 外积(v.transpose() 是视图)
double d = v.dot(v);                // 点积

5. 关键注意事项

  1. 生命周期管理:视图类(如 BlockTranspose)依赖原矩阵的数据,原矩阵销毁后视图无效。

  2. 性能优化:固定尺寸的 Block(如 block<2,2>())比动态尺寸更快。

  3. 别名问题:操作视图时避免与原矩阵混用,可能导致错误:

    cpp

    A = A.transpose();  // 错误!需使用 A.transposeInPlace();

完整方法速查表

操作类型类/方法典型用途
内存映射Map<MatrixXd>包装现有数组为 Eigen 矩阵
子块提取block()segment()操作局部数据
结构视图diagonal()transpose()快速访问对角线、转置等结构
http://www.dtcms.com/wzjs/4464.html

相关文章:

  • 做网站佛山谷歌chrome手机版
  • 阿里建站系统头条收录提交入口
  • 成都网站建设报价免费的网站域名查询565wcc
  • 阳江网站网站建设友情链接百科
  • 手机门户网站建设seo工程师是做什么的
  • 怎么建设宣传网站专业搜索引擎seo技术公司
  • 想学学做网站杭州seo哪家好
  • 网站建设费用申请查询关键词排名工具
  • 网站开发汇报ppt模板怎么建立公司网站
  • 盐城做网站需要多少钱手机百度下载免费
  • 做交易网站中国品牌策划公司排名
  • b站推广网站2023年网络营销的方式有十种
  • 黄金网站大全免费seo排名优化工具
  • 什么网站可以做医疗设备的营销型网站建设多少钱
  • 网站需要哪些手续产品品牌推广策划方案
  • 免费域名排行榜提高seo排名
  • 好康的网站代码软件推广接单平台
  • 怎么做电影网站不违法吗抖音黑科技引流推广神器
  • 赣州市城乡建设局官方网站seo免费视频教程
  • 贵州省建设学校网站专业技能培训机构
  • 大型门户网站建设报价表b2b有哪些电商平台
  • 网页设计与制作app无锡谷歌优化
  • 传媒公司 网站开发哪个行业最需要推广
  • 那个网站可以学做西餐百度的网页地址
  • 西部数据wordpressseo站内优化最主要的是什么
  • 网站建立的企业郑州网站推广排名公司
  • 微网站制作价格网络seo关键词优化技术
  • 网站购物车代码怎么做谷歌账号
  • 响应式网站建设服务提供商优化关键词排名哪家好
  • 亚洲做性自拍视频网站免费刷赞网站推广免费