C++基础
基础知识
流浪德意志
千里之行始于足下!
展开
-
C++写入和读取结构体到二进制文件
对于不定长的数组,需要存储数据的长度信息,然后获取数据。原创 2024-03-01 21:53:31 · 650 阅读 · 0 评论 -
Qt访问数据库(ACCESS)基本操作
应用程序经常需要存储大量数据和表,因此对数据的基本操作很有必要;这里只涉及基本操作,不涉及高级功能;例如:对用户的管理界面可以实现对用户新增、删除和修改功能mysqltablemodel可以不用,直接使用QSqlTableModel类showDialog函数用于接收信号,显示本界面窗口#include <QSqlTableModel>#include "mysqltablemodel.h"#include <QSqlDatabase>class.原创 2021-12-10 17:21:19 · 3290 阅读 · 0 评论 -
Qt对Word的自动化调用(基于dot模板生成)
同样需要使用QT +=axcontainer同样需要注意:新建QAXObject,完成操作后需要关闭文档并删除m_pWord指针!这样word应用程序会在后台自动退出!#ifndef WORD_H#define WORD_H#include <QObject>#include <QAxObject>#include <QAxWidget>class Word : public QObject{ Q_OBJECTpublic: .原创 2021-12-09 18:35:30 · 966 阅读 · 0 评论 -
Qt对Excel表格的自动化调用汇总(新建、打开和保存)
Qt调用excel方法原创 2021-11-17 19:59:51 · 981 阅读 · 0 评论 -
STL标准模板库学习笔记三(STL哈希容器)
关联式容器(排序)的底层实现采用的树存储结构,更确切的说是红黑树结构; 无序容器(哈希)的底层实现采用的是哈希表的存储结构。基于底层实现采用了不同的数据结构,因此和关联式容器相比,无序容器具有以下 2 个特点: 无序容器内部存储的键值对是无序的,各键值对的存储位置取决于该键值对中的键, 和关联式容器相比,无序容器擅长通过指定键查找对应的值(平均时间复杂度为 O(1));但对于使用迭代器遍历容器中存储的元素,无序容器的执行效率则不如关联式容器。unordered_map 存储键值对 &l.原创 2021-10-08 15:49:29 · 105 阅读 · 0 评论 -
STL标准模板库学习笔记二(STL排序容器)
关联式容器可以快速查找、读取或者删除所存储的元素,同时该类型容器插入元素的效率也比序列式容器高。使用关联式容器存储的元素,都是一个一个的“键值对”( <key,value> ),这是和序列式容器最大的不同。除此之外,序列式容器中存储的元素默认都是未经过排序的,而使用关联式容器存储的元素,默认会根据各元素的键值的大小做升序排序。关联式容器名称 特点 map 定义在 <map> 头文件中,使用该容器存储的数据,其各个元素的键必须是唯一的(即不能重复),该容器会根据原创 2021-10-08 15:30:02 · 197 阅读 · 0 评论 -
STL标准模板库学习笔记一(STL序列容器)
来源:C语言中文网:C语言程序设计门户网站(入门教程、编程软件)STL 容器序列容器是默认不排序的,比如数组向量vector,哈希容器用于快速查找效率是O(1),排序容器用于查找最小最大效率也是O(1)序列容器 主要包括 vector 向量容器、list 列表容器以及 deque 双端队列容器。之所以被称为序列容器,是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置,元素就会位于什么位置。 排序容器 包括 set 集合容器、multiset原创 2021-10-08 12:25:14 · 104 阅读 · 0 评论 -
C++算法基础之手写常见排序算法 堆排序 归并排序 快速排序 自定义排序(真题)
排序算法是所有算法的基础,如果真正徒手开始写还是要熟练掌握的,从零开始而不是直接在LeetCode上写。下面的代码都是在VS Code中能直接运行的!堆排序 堆整理后 最大的元素在头时间复杂度O(n logn) 空间复杂度 O(1)注意swap函数中的形参!#include<iostream>#include<vector>using namespace std;//swap函数必须 是形参 否则调用后没有任何作用!void swap(int&原创 2021-09-28 16:19:00 · 214 阅读 · 0 评论 -
Leetcode之KMP字符串算法
针对题目28题 实现strStr()功能找出needle在haystack字符串的第一个位置 否则返回-1当然有暴力法,但是时间复杂度是O(mn)而KMP算法提前计算出needle字符串的重复数据加以利用,j能够有效的回退到可能的位置,时间复杂度是O(m+n)int strStr(string haystack, string needle) { int n = haystack.size(), m = needle.size(); if(m == 0) ret原创 2021-07-23 10:51:21 · 134 阅读 · 0 评论 -
LeetCode之快速幂算法
参考:https://zhuanlan.zhihu.com/p/95902286https://leetcode-cn.com/problems/climbing-stairs/solution/pa-lou-ti-by-leetcode-solution/#comment对于契科夫数列问题以及爬楼梯问题的解决办法。#include <cstdio>#define MOD 1000000007typedef long long ll;struct matrix{.原创 2021-05-27 16:23:22 · 131 阅读 · 0 评论 -
LeetCode之最长公共子序列问题LCS解决方法
Leetcode官网解答 使用动态规划原理,请参考原文地址:https://leetcode-cn.com/problems/longest-common-subsequence/solution/zui-chang-gong-gong-zi-xu-lie-by-leetcod-y7u0/图片来源官网解答:那么问题来了,如何实现输出答案字符串呢?下面是我的思路;使用queue用来存储中间数据(字符串及下一次的ID),相当于BFS遍历。从最后一个网格倒叙进行解答,查询字符是否一致,原创 2021-05-24 08:52:54 · 272 阅读 · 0 评论 -
/usr/bin/ld: cannot find -lUUID::UUID无法加载库文件
catkin_make后出现以下问题:/usr/bin/ld: cannot find -lUUID::UUIDcollect2: error: ld returned 1 exit statusgazebo_ros_pkgs/gazebo_ros/CMakeFiles/gazebo_ros_paths_plugin.dir/build.make:283: recipe for target '/home/nl/Documents/NRP/GazeboRosPackages/devel/lib/li原创 2021-02-20 02:17:15 · 897 阅读 · 0 评论 -
Unable to correct problems, you have held broken packages无法安装libignition-math6-dev
sudo apt-get install libignition-math6-dev出现错误!Reading package lists... DoneBuilding dependency treeReading state information... DoneSome packages could not be installed. This may mean that you haverequested an impossible situation or if you are u原创 2021-02-17 04:10:49 · 345 阅读 · 0 评论 -
virtualenv: error: unrecognized arguments: --no-site-packages
使用virtualenv --version,看到自己的版本大于20,就可以将如下这段删除:export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'我碰到的情况下:user_makefile报错找到对应文件后,找到no-site-packages删除即可!因为从版本20开始,默认就是’--no-site-packages‘了。...原创 2021-02-17 01:29:55 · 233 阅读 · 0 评论 -
git错误pathspec did not match any file(s) known to git及相关操作
Git error:pathspec did not match any file(s) known to git本地文件与远程无对应:我这里的情况是在执行./update_nrp update --allgit pullAlready up to date.git fetchgit branch -a* master remotes/origin/HEAD -> origin/development remotes/origin/IBA1 remotes/orig..原创 2021-02-15 10:15:30 · 22222 阅读 · 0 评论 -
学习如何用平均分布随机数生成正态分布随机数
最近在研究stage源代码的时候,发现其中ranger的正态分布噪声模型使用了一个算法,很值得借鉴。算法名叫Box–Muller transform,发明于1934年,总结在此。公式为:截图来源wikihttps://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform其中U1 U2 为0到1之间的均匀分布随机数下面为代码:来源stage,可以生成均值为0,方差为variance的正态分布。https://codedocs.xyz/C.原创 2021-02-04 08:04:43 · 1239 阅读 · 1 评论 -
openMP并行运算调用方法来提高运算速度C++
1 #include <iostream> #include <omp.h> 2 int main(){ 3 int sum = 0; 4 int a[10] = {1,2,3,4,5,6,7,8,9,10}; 5 #pragma omp parallel for reduction(+:sum) 6 for (int i=0;i<10;i++) 7 sum = sum + a[i]; 8 std::cou..原创 2020-10-30 02:18:18 · 1314 阅读 · 0 评论 -
Cholesky Matrix Decomposition矩阵分解算法解析
线性代数中可以将一个正定矩阵分解为唯一的一个下三角矩阵及其共轭转置矩阵的乘积,Cholesky矩阵分解。计算效率将比LU分解提高两倍以上。A = [L][L]T计算公式如下:// CPP program to decompose a matrix using // Cholesky Decomposition #include <bits/stdc++.h> using namespace std; const int MAX = 100; void Cho.原创 2020-10-13 20:08:30 · 987 阅读 · 3 评论 -
Github简易上手指南The authenticity of host github.com can‘t be established 如何生成SSH-key
第一步按照官方教程生成SSH公钥和私钥ssh-keygen -t rsa -b 4096 -C "your_email@example.com"> Generating public/private rsa key pair.> Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]> Enter passphrase (empty for no passphrase): [Typ原创 2020-09-26 04:19:06 · 766 阅读 · 0 评论 -
C++程序调试过程输出数据的三种基本方法std::cout filestream image
最简单方法就是std::cout将数据显示到终端#include <iostream>std::cout << "pos_x="<< pos_x << " pos_x1=" << pos_x1<<" pos_x2=" << pos_x2 << " pos_y="<< pos_y<< " pos_y1="<< pos_y1<< " pos_y2="<&l原创 2020-09-24 22:39:49 · 1569 阅读 · 0 评论 -
C++基础语法1 break continue floor ceil 简析
break: 用于中断本层的整个循环continue: 用于中断本次循环,并不中断整个循环,而是继续下次循环for(x = 0; x < TEMPLATE_X_SIZE; x++) { for(y=0; y < TEMPLATE_Y_SIZE; y++) { sum_all += abs(view_temp[x+y*TEMPLATE_X_SIZE] - vt->data[x+y*TEMPLATE_X_SIZE]); if(sum_all原创 2020-09-24 19:47:04 · 96 阅读 · 0 评论