【C C++开源库】C C+(1),2024年最新字节跳动面试分享-程序员宅基地

技术标签: 2024年程序员学习  面试  c++  c语言  

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

Eigen是使用C++封装好的的一个矩阵运算库,可以很方便地实现各类矩阵运算,而且不用安装,只需要简单配置即可。

1.下载及安装
1.1Linux安装及配置

sudo apt-get install libeigen3-dev

Eigen只包含头文件,因此它不需要实现编译(只需要使用#include),指定好Eigen的头文件路径,编译项目即可。

Eigen头文件的默认安装位置是:“/usr/include/eigen3”.

1.2Windows配置

下载地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#Download

下载文件解压后,文件目录如下:

image-20210819215257932

  • 只需要将eigen-3.4.0的路径加入到头文件查找路径。
  • 使用时包含头文件即可,比如 #include <Eigen\Dense>
2.测试使用

本博客在Windows下使用DevC++和Clion两款C/C++来测试一下。

为了应对不同的需求,Eigen库被分为多个功能模块,每个模块都有自己相对应的头文件,以供调用。 其中,Dense模块整合了绝大部分的模块,而Eigen模块更是整合了所有模块(也就是整个Eigen库)。

在这里插入图片描述

2.1DevC++

添加头文件路径

https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210819220638799.png

测试代码

#include
#include <Eigen\Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2d a;
a << 1, 2,
3, 4;
MatrixXd b(2, 2);
b << 2, 3,
1, 4;
cout << “a + b =\n” << a + b << endl;
cout << “a - b =\n” << a - b << endl;
cout << “Doing a += b;” << endl;
a += b;
cout << “Now a =\n” << a << endl;
cout << "a^T= " << a.transpose() << endl;
cout << "a*b= " << a*b << endl;
Vector3d v(1, 2, 3);
Vector3d w(1, 0, 0);
cout << “-v + w - v =\n” << -v + w - v << endl;
cout << v << endl;
cout << v.transpose() << endl;
system(“pause”);
}

运行结果如下

image-20210819220836562

2.2Clion

clion中添加头文件可以在CMakeLists.txt中添加,也可以在项目目录中添加。

  1. (推荐)编辑项目目录下的 CMakeLists.txt,添加一行

include_directories(“/path/to/headers”) #换成头文件所在目录

  1. 将对应的头文件或文件夹复制到项目根目录,然后在源文件中使用 #include “文件名” 包含

这里我们使用第一种方法,更改之后,CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.19)
project(untitled1)

set(CMAKE_CXX_STANDARD 14)

include_directories(“D:\eigen-3.4.0”)

add_executable(untitled1 main.cpp)

测试代码依旧是上面的代码

#include
#include <Eigen\Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2d a;
a << 1, 2,
3, 4;
MatrixXd b(2, 2);
b << 2, 3,
1, 4;
cout << “a + b =\n” << a + b << endl;
cout << “a - b =\n” << a - b << endl;
cout << “Doing a += b;” << endl;
a += b;
cout << “Now a =\n” << a << endl;
cout << "a^T= " << a.transpose() << endl;
cout << "ab= " << ab << endl;
Vector3d v(1, 2, 3);
Vector3d w(1, 0, 0);
cout << “-v + w - v =\n” << -v + w - v << endl;
cout << v << endl;
cout << v.transpose() << endl;
system(“pause”);
}

运行结果如下

https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210819222406819.png

3.深入学习

本博客只是对矩阵运算库的简介、汇总、环境配置,因此不会讲太详细的使用。主要是本人太菜了,讲不来。不过为了内容的完整型,我会给几个好的比较完整的eigen学习教程。



二、C++矩阵运算库 - Armadillo

Armadillo是一个开源高性能C++线性代数库,提供了和Matlab中常用命令接近的函数接口,可以方便地将Matlab/Octave开发的算法移植到C++中。特别地,我们可以先在Matlab环境中编程进行算法原型验证,待算法充分验证通过之后再利用Armadillo移植到C++中编译为独立的可执行程序。虽然Matlab也支持利用mcc直接将m文件编译生成动态链接库文件或者可执行程序,但是这些代码的运行需要Matlab运行环境(MCR)的支持;而通过Armadillo进行移植则可以完全脱离Matlab环境。

1.下载及安装
1.1Linux安装

执行命令:

sudo apt-get install libopenblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libarpack2-dev
sudo apt-get install libsuperlu-dev

下载Armadillo包,链接:https://sourceforge.net/projects/arma/files/armadillo-9.600.6.tar.xz/download

在Armadillo的安装目录打开终端执行:

cmake .
make

1.2Windows配置

因为Armadillo需要C++11的支持,而DEVC++好久没更新编译器了,支持不好,因此我们换用visual studio2019来测试。

下载Armadillo包,链接:https://sourceforge.net/projects/arma/files/armadillo-9.600.6.tar.xz/download

下载解压后需要配置头文件和库文件的路径。

可以参考这篇文章:基于vs2017的armadillo配置教程(超详细!)

2.测试使用

测试代码如下:

#include
#include
using namespace arma;
int main()
{
//生成一个随机矩阵A,大小为5x5,矩阵每个元素的范围为:(0,10)
mat A = randu(5, 5) * 10;
A.print(“原矩阵A = \n”);
}

在这里插入图片描述

3.深入学习

看了下,好像中文没啥好的教程,不如直接看帮助手册。

三、C++矩阵运算库 - boost

Boost在C++中地位非常高,被称为C++的准标准库,其中的ublas模块包含矩阵类,用法如下:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
)在C++中地位非常高,被称为C++的准标准库,其中的ublas模块包含矩阵类,用法如下:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-9Ibz02WA-1713433077309)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84254474/article/details/137930201

智能推荐

Hypack 2016-2018设置使用测试与相关下载_hypack2016-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏9次。Hypack 2016-2018使用测试与相关下载1、hypack 2016、hypack 2017、hypack2018通过现场使用测试,发现64位版本破解无效,32位破解成功。2、Hypack 6.2以前的版本,导航硬件典型配置库文件为nmea.DLL。(配置为nmea.DLL输出WGS84与本地54坐标XY出现错误)3、Hypack 2016-2018版本导航硬件配置库文件应该采用G..._hypack2016

CiteSpace使用入门教程_citespace怎么用-程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏17次。CiteSpace软件的使用及应用_citespace怎么用

这6种最佳移动自动化测试工具你知道吗?_移动应用测试工具有哪些-程序员宅基地

文章浏览阅读1k次。它还带有一个客户端库的特性,可以托管 Java、Python、C# 等中的锅炉代码,以帮助 QA 更快、更有效地开发测试脚本。testRigor 是超级可靠的,因为它为人类各自创建了一个测试套件,也就是说,它不依赖于 XPath 之类的源。它是一个基于云的移动自动化测试工具,允许用户在各种设备和操作系统版本上以连续的时间间隔快速运行测试。总而言之,它是一个很好的工具,但既不是免费的也不是开源的。ZAPTEST 的卖点是它的投资回报率计算器,它允许像您这样的企业计算这种自动化工具的投资回报率。_移动应用测试工具有哪些

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测_nn.multiheadattention 图像分类-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏12次。分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测_nn.multiheadattention 图像分类

对称加密、非对称加密、公钥、私钥究竟是个啥?_非对称加密,私钥公钥成对生成是啥意思-程序员宅基地

文章浏览阅读1.3w次,点赞72次,收藏247次。世界上有没有不能破解的密码或加密方式?还真有一种,叫做一次性密码本,这时唯一一种不能破解的加密方式,而其他的密码只要时间无限理论上都是可破解的,如果你也对加密这个领域感兴趣,可以简单了解下这些概念..._非对称加密,私钥公钥成对生成是啥意思

linux系统的字体文件安装_目标'usr/share/fonts/' 不是目录-程序员宅基地

文章浏览阅读1.3k次。ubuntu里新装的terminator里,字体实在是不忍直视。尤其是字母i,跟别的字母挤在一起,根本就看不清楚。所以特意下载了一个苹果的Monaco字体来代替。linux系统的字体文件放在/usr/share/fonts/目录以及用户的~/.fonts和~/.local/share/fonts目录下,第一个位置为系统所用用户共享,将字体安装到这个目录需要管理员权限;后面两个位置则为当前登陆用户..._目标'usr/share/fonts/' 不是目录

随便推点

yml配置文件中map的配置-程序员宅基地

文章浏览阅读6.5k次。yml中map的配置文件

python中摄氏度的符号咋打_linux下怎么方便的输入度数符号 °-程序员宅基地

文章浏览阅读5k次。你的位置:问答吧-> Linux 入门-> 问题详情linux下怎么方便的输入度数符号 °在windows下可以用Alt 0176输入,在MAC下也有方便的方法可以输入,在linux下呢?参见:http://anonymouse.org/cgi-bin/anon-w...egree_(symbol)作者: mu..._linux 输入法 摄氏度

Java面试题之接口和抽象类的区别_java面试题 接口和抽象类的区别-程序员宅基地

文章浏览阅读706次。下面一些东西可能会让你不敢相信,这次分为jdk8和jdk9来测试的,大家也可以用不同的jdk尝试一下。先说一下基本的定义,在说一下特别的东西。有疑惑的同学一定要去自己手动的试验一下,加深印象,面试官比如说接口中的方法不能有方法体啊什么的,一定坚定告诉他是可以的!一个类可以同时实现多个接口 一个抽象类只能继承一个类(单继承)接口和接口之间支持多继承 类和类之间只能单继承。抽象类是半抽象的 接口是完全抽象的。_java面试题 接口和抽象类的区别

Machine and Deep Learning with Python-程序员宅基地

文章浏览阅读407次。Machine and Deep Learning with PythonEducationTutorials and coursesSupervised learning superstitions cheat sheetIntroduction to Deep Learning with PythonHow to implement a neural network..._pyqtgraph eeg

QNX操作系统简介_openqnx-程序员宅基地

文章浏览阅读2.4w次,点赞17次,收藏119次。QNX是商业类Unix实时操作系统,主要针对嵌入式系统市场。该产品开发于20世纪80年代初,后来改名为QNX软件系统公司。QNX软件系统公司,黑莓公司旗下子公司,是全球领先的创新嵌入式技术供应商,包括中间件、开发工具和操作系统。QNX Neutrino实时操作系统,QNX Momentics工具套件和QNX Aviage中间件系列基于组件的架构共同构成业界可靠性和延展性最强的架构,帮助建立高性能的..._openqnx

OpenGL纹理-12.5、纹理坐标-程序员宅基地

文章浏览阅读227次。12.5、纹理坐标12.5.1 坐标定义在绘制纹理映射场景时,不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标。经过多种变换后,几何坐标决定顶点在屏幕上绘制的位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。并且顶点之间的纹理坐标插值与基础篇中所讲的平滑着色插值方法相同。纹理图像是方形数组,纹理坐标通常可定义成一、二、三或四维形式,称为s,..._opengl 定义纹理坐标