C、C++学习笔记
文章平均质量分 63
theArcticOcean
Website: https://www.weiy.city
Wechat Subscription Account: 胡桃小院
展开
-
【CPP】从容器中删除元素
本文内容学习自 Scott Meyers的《Effective C++》“第33条:对包含指针的容器使用remove这一类算法时要特别小心”remove搭配erase容器(除了list)中的remove不是真正意义上的删除。因为它做不到。remove仅仅是把想要移动的对象放到容器的后面,不需要替换的元素不断从后面移动、替换前面需要被删除的元素。vector<int>::i...原创 2019-03-10 18:03:24 · 918 阅读 · 0 评论 -
QVTKOpenGLWidget使用问题记录
problem 1QVTKOpenGLWidget requires a vtkGenericOpenGLRenderWindow.vtkCocoaRenderWindow is not supported.QVTKOpenGLWidget 对应使用的renderWindow是 vtkGenericOpenGLRenderWindowproblem 2VTK is designed...原创 2018-10-03 20:09:36 · 5458 阅读 · 0 评论 -
Print debug message based on MSVC
之前有写过:Print debug message based on MinGW 。那是在MinGW的编译环境下输出调试信息到本地文件中。如果换成MSVC的编译环境,原来的方法就行不通了,因为某些函数和语法不支持:#ifndef LOG_H#define LOG_H#include <stdarg.h>#include <QDebug>#include &l...原创 2018-09-07 22:46:01 · 229 阅读 · 0 评论 -
【VTK】vtkImageActor显示图片的问题记录
vtkImageActor显示图片简单的例子:#include &lt;iostream&gt;#include &lt;vtkSmartPointer.h&gt;#include &lt;vtkProperty.h&gt;#include &lt;vtkPolyData.h&gt;#include &lt;vtkTriangleFilter.h&原创 2018-09-07 20:00:38 · 1445 阅读 · 0 评论 -
【VTK】在Mac上学习VTK
MAC OS X上的编译:https://www.vtk.org/Wiki/VTK/Building/MacOSX编译vtk使得QT版本为5cmake configure:cmake ./ -G &quot;Unix Makefiles&quot; \-DVTK_USE_QVTK:BOOL=ON \-DCMAKE_INSTALL_PREFIX=/usr/local \-DVTK_US...原创 2018-08-31 20:26:26 · 2253 阅读 · 5 评论 -
VTK 学习初步
VTK相关的基础知识VTK,visualization toolkit,可视化工具包,主要应用于三维计算机图形、图像处理和可视化方面。它在三维函数库OpenGL的基础上采用面向对象的设计方法发展而来,且具有跨平台的特性。 VTK面向对象,含有大量的对象模型。 源对象是可视化流水线的起点,映射器(Mapper)对象是可视化流水线的终点,是图形模型和可视化模型之间的接口. 回调(或用户方法):原创 2016-05-08 19:22:28 · 5239 阅读 · 0 评论 -
libc system函数的探究
system导致父进程等待在mac上的在线帮助有对system的如下说明: The system() function hands the argument command to the command interpreter sh(1). The calling process waits for the shell to finish executing the c...原创 2018-07-29 09:53:50 · 1574 阅读 · 3 评论 -
基于GDbus与QDbus的DBUS小练习
QDbusAPI:QT 的帮助文档 任务描述: proxy 获取 adaptor的数据,修改数据,接收数据修改的信号并查看新的值。 文件结构:➜ DbusTest git:(master) ✗ tree.├── Adaptor│ ├── Adaptor.pro│ ├── Makefile│ ├── OrgExampleDdbusTest.xml│ ├── main.c...原创 2018-06-17 19:32:53 · 1260 阅读 · 0 评论 -
C++ 自定义IO操作符
C++ operator >> 与 <<写一个结构体,需要进行文本的读取和输出。需要给结构体定义操作符<<, >>。 如下是结构体的部分内容:typedef struct __wordUnit{ string word; string translation; __wordUnit(){ word...原创 2018-03-22 11:29:21 · 927 阅读 · 0 评论 -
C++ 泛型算法学习笔记(equal, accumulate, back_iterator, pair)
equalequal是区间比较算法 原型为:template <class _InputIterator1, class _InputIterator2>inline _LIBCPP_INLINE_VISIBILITYboolequal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator...原创 2018-03-31 16:42:34 · 586 阅读 · 0 评论 -
algorithm 题集八 (18.03.25)
本文一共12题,均来自《剑指offer》,不复杂。在平时的练习中收集了部分组合而成。(1)输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。(2)用两个栈来实现一个队列,完成队列的Push和Pop操...原创 2018-03-25 16:05:44 · 420 阅读 · 0 评论 -
QT 关于Driver not loaded 与 结构体的构造函数
QT 关于Driver not loaded在程序中使用SQLite数据库,如下的代码: QSqlDatabase db; QSqlQuery query; db = QSqlDatabase::addDatabase("QSQLITE"); if(db.open()){ if(!query.exec("create table stu...原创 2018-02-21 15:23:56 · 464 阅读 · 0 评论 -
C++ vector::erase和无参构造函数的调用
vector::eraseC++ vector的元素删除,源码是这样的:template <class _Tp, class _Allocator>inline _LIBCPP_INLINE_VISIBILITYtypename vector<_Tp, _Allocator>::iteratorvector<_Tp, _Allocator>::...原创 2018-02-12 08:19:29 · 742 阅读 · 0 评论 -
C++ 存储指针的容器删除元素
假设需要用vector等容器存储指针,形如vector<typename *>,在删除元素的时候,仅仅使用erase改变了容器的存储,却没有释放指针所指向的内存,一不小心就造成了内存溢出。 故,我们需要在erase的同时释放内存。template<typename T>void deleteObject(T *obj){ delete obj; ...原创 2018-02-11 16:27:56 · 2438 阅读 · 1 评论 -
【VTK】vtkPolyData生成网格与平面
生成网格通过设置vtkPolyData的Points和lines来生成我们想要的网格。为了不影响观看效果,例子中将交互性关闭了。CMakeLists.txtcmake_minimum_required(VERSION 2.8)project(twoDimensionGird)find_package( VTK REQUIRED )include( ${VTK_USE_FILE} ...原创 2018-10-13 14:57:01 · 5176 阅读 · 0 评论 -
CMake 设置 Application Icon
For Windows增添rc文件到工程中。add file:Source/myapp.rc包含内容:IDI_ICON1 ICON DISCARDABLE "Images/logo.ico"他指明了图标文件的路径。然后将这份rc文件添加到CMakeLists.txt中:file( GLOB SourceFiles Source/*.cpp...原创 2018-10-13 19:07:24 · 3396 阅读 · 0 评论 -
learn vtk by Tcl script on mac
环境:VTK-8.1.1Mac OS X 10.13.6/usr/bin/tclshbuild vtk,cmake一下:cmake ./ -G &amp;quot;Unix Makefiles&amp;quot; \-DVTK_USE_QVTK:BOOL=ON \-DCMAKE_INSTALL_PREFIX=/usr/local \-DVTK_USE_GUISUPPORT:BOOL=ON \-DVTK_QT_V...原创 2018-10-10 08:09:19 · 462 阅读 · 0 评论 -
【VTK】light type
vtkLight的光照类型设置: virtual void SetLightType(int);三类光照类型:SceneLightHeadLight (always located at the camera and is pointed at the camera’s focal point.)CameraLight(A CameraLight is also attached to t...原创 2019-01-11 22:17:55 · 802 阅读 · 0 评论 -
【CPP】排序的稳定性
排序的稳定性:如果两个元素的数值相等,那么在排序之后两者的相对位置不会发生变化(A在B前面,排序之后,A还是在B前面),这样的特性称之为“稳定”。经典例子:稳定的排序:冒泡排序、插入排序、归并排序等不稳定的排序: 选择排序、快速排序、堆排序等不稳定排序,以快速排序为例做演示,他的核心思想是分治:1、 先从序列中取出一个数作为basic number。2、将比此数大的元素放到它的右边,...原创 2019-01-06 16:45:51 · 404 阅读 · 1 评论 -
【VTK】vtkPolyDataNormals 计算法向量
vtkPolyDataNormals可以用于计算poly data中points和cell的法向量,方便处理一些数据集。下面的例子显示了vtkPolyDataNormals作用在正方体和球体的效果。注:为了不影响阅读体验,此文仅展示关键代码,所有例子的完整代码和输出可以浏览:【VTK】vtkPolyDataNormals example 正方体人为构造6个面的正方体,每一个cell是一个正...原创 2019-01-10 13:46:11 · 4718 阅读 · 10 评论 -
【VTK】三角化3D物体的表面
在VTK的体系中,要正常将actor输出STL文件,需要相应的PolyData三角化。 vSPNew( triangle, vtkTriangleFilter); triangle-&gt;SetInputData( polyData ); triangle-&gt;Update();在一些专业软件,比如Meshmixer中查看STL文件,如果有任何的“不和谐”都会被标...原创 2018-12-29 22:12:07 · 2280 阅读 · 0 评论 -
【VTK】不均匀样条插值
和上一篇文章【VTK】create spline points 一样,讨论spline points的生成。这一次,利用方法 void Evaluate(double u[3], double Pt[3], double Du[9]) override; 由于,u[0]代表线段与线段长累积的比率,通过控制U,达到控制插值点密度的目的。也可以保证特定的几个点位置不变,在其他部分插值。#inc...原创 2018-12-29 21:39:37 · 1030 阅读 · 0 评论 -
【VTK】create spline points
定义5个点 double p[5][3] = { {0.0, 4.0, 0.0}, {2.0, 0.0, 0.0}, {4.0, 2.0, 0.0}, {6.0, 0.0, 0.0}, {8.0, 4....原创 2018-11-25 16:04:07 · 1288 阅读 · 3 评论 -
【VTK】vtkTextActor位置设置问题
在之前的文章【vtk】获取vtkTextActor的长和宽 中我们知道了如何获取text的长和宽。本文讨论vtkTextActor的size在变宽后,它的位置问题。在vtkTextActor中,有提供SetPosition方法,从注释可以看出,它的参数对应着actor的左下角坐标。/*** Get the PositionCoordinate instance of vtkCoordina...原创 2018-11-04 19:30:29 · 4480 阅读 · 0 评论 -
【VTK】关于QVTKOpenGLWidget的RenderWindow设置问题
在这篇文章:【VTK】use vtk in qt widget example 的基础上继续实验。如果不给QVTKOpenGLWidget设置RenderWindow,尝试直接去默认默认值,那么它的返回值是一个nullptr。 printf( &quot;ui-&amp;gt;qvtkWidget-&amp;gt;GetRenderWindow(): %p\n&quot;, ui-&amp;gt;qvtkWid原创 2018-11-02 10:05:06 · 8827 阅读 · 9 评论 -
【VTK】vtk actor空间变换后的点映射与向量映射
在三维空间中,人们通常需要对平面等形体进行旋转,拖拽等操作。比如下面的过程:将平面绕平面的Y轴旋转一定角度将其绕平面自身的X轴旋转一定角度将平面向向量方向(1, 2, 3)移动一段距离。这样复杂的操作通常需要我们使用vtkActor提供的操作函数:void vtkProp3D::RotateY (double angle)void vtkProp3D::RotateX (do...原创 2018-11-06 21:28:16 · 2199 阅读 · 0 评论 -
【VTK】坐标系入门
vtkCoordinate and Coordinate Systems以下英文介绍内容出自《VTKUsersGuide.pdf》The Visualization Toolkit supports several different coordinate systems, and the class vtkCoordinate manages transformations betwee...原创 2018-10-20 22:48:22 · 2742 阅读 · 0 评论 -
【VTK】使用vtkActor2D添加polyline
具体实现如下:#include <iostream>#include <vtkSmartPointer.h>#include <vtkSphereSource.h>#include <vtkActor.h>#include <vtkConeSource.h>#include <vtkRenderer.h>#inc...原创 2018-10-20 22:41:22 · 2678 阅读 · 3 评论 -
learn vtk by Python script on mac
之前写过一篇文章:learn vtk by Tcl script on mac本文介绍vtk的Python学习环境的创建。j基础环境:VTK-8.1.1macOS Mojave 10.14Python 2.7.10build vtk,CMake一下:cmake ./ -G "Unix Makefiles" \-DVTK_USE_QVTK:BOOL=ON \-DCMAKE_IN...原创 2018-10-20 10:02:00 · 761 阅读 · 0 评论 -
【VTK】绘制Bounding Box
参考文章【vtk】some-press-key-operations-for-default-renderwindowiterator ,我们可以通过按下w切换到wireframe mode,按下s键切换到surfaces mode.但是这并不是我们要求的bounding box,要画出bounding box,可以这样:#include &lt;iostream&gt;#includ...原创 2018-10-22 18:13:25 · 1679 阅读 · 0 评论 -
insert与copy的插入比较
举例代码: 将一段数据复制到vector的首部int data[5] = {0,1,2,3,4};vectorint> vInt;vInt.push_back(10);vInt.insert(vInt.begin(),data,data+5);vInt.clear();vInt.push_back(10);copy(data, data+5, inserter(vInt,v原创 2018-01-20 11:04:09 · 1402 阅读 · 0 评论 -
Print debug message based on MinGW
夜深了,记录一篇打印log的文章。 我们知道,在C/C++中,一些特定的宏很有用,比如__FILE__, __LINE__等,他们可以告诉我们当前程序运行的信息。另外,参数可变的函数,dateType func (char * fmt, …)让我们随心所欲的输入任意个数的参数。结合这两者的优点,可以创建显示程序运行点的log打印函数。这对于bug定位有非常重要的意义。 如下是log函数的实现:/原创 2017-12-08 23:09:37 · 499 阅读 · 0 评论 -
foxmail 批量导入收件人邮箱信息
问题产生的背景: 用foxmail发邮件时,填写收件人,每次输入别人的邮箱时要换成英文输入,有时还要得判断是不是我想找的那个人,确实麻烦。 copy: 然后处理这份cin.txt原创 2017-09-22 19:16:45 · 7124 阅读 · 0 评论 -
用C学习线性表
线性表是n个数据元素组成的有限序列,按照存储的方式分为顺序和链式。今天用C对顺序和链式分别做点练习。 (下面有很大一部分的代码是用vim写的,贴到博客上就有些格式问题了,不知道怎么解决。。)纯C+顺序表 完成迷你选座系统谁说简单数组不强大? 用简单的数组完成小型的选座系统建设:#include <stdio.h>#include <stdlib.h>#include <string.h>#原创 2016-06-29 11:45:47 · 692 阅读 · 0 评论 -
用C学习内存
内存分段32位操作系统,地址总线是32位,寻址空间就是32位,内存编号只能编到32个二进制位,故其只能使用4G内存。空间: 232byte=210×210×210×22byte=1024×1024×1024×4byte=1024×1024×4K=1024×4M=4G2^{32} byte= 2^{10} \times 2^{10} \times 2^{10} \times 2^2 byte原创 2016-10-02 23:39:38 · 4314 阅读 · 0 评论 -
C++ set学习初步
C++的set容器有着许多方便使用的特性,比如set 可以“过滤”重复的文本单词(数字等),并且从小到大排好序,利用set的qset.count(number)可以返回number在qset中出现的次数(有则是1,无则是0),可以查看最大空间maxsize,查看已用空间size,插入insert(),删除erase(),但是容器带来便利的同时也带来了一些麻烦,比如反序遍历就显得流程较多。#原创 2015-06-30 10:35:05 · 695 阅读 · 0 评论 -
带有限制条件的第K个排列——CF 513B1、B2
codeforces 513B1 Permutationshttp://codeforces.com/problemset/problem/513/B1大意:求解第K个排列,且排列满足 的值尽可能大。 1 ≤ n ≤ 8分析:数据量小,暴力解决。第K个排列和 next_permutation相关#include #include #include us原创 2016-03-11 21:37:36 · 785 阅读 · 0 评论 -
随机数
本文所涉及的内容主要和C函数rand()相关。生成随机数通常用rand()函数,自己用的不多——但是只要需要产生随机数马上想到的就是它。#include #include //随机函数文件#include using namespace std;int main(){ int i; srand(time(NULL));//设置随机数种子——当前系统的毫秒值原创 2016-01-25 14:13:42 · 558 阅读 · 0 评论 -
C++ priority_queue
priority queue在许多的特别场合还是很实用的,因为它带来的便利,人们可以少写很多的代码,所以学习它是有必要的。很多时候我们会自己定义比较函数,因为标准库默认使用元素类型的在g++编译器中编译不过,在函数中operator旁边还是用#include#include#include#include#includeusing namespace std;struct cm原创 2015-07-09 19:42:24 · 1041 阅读 · 0 评论 -
& | 与&& ||
逻辑&和逻辑|两边的表达式都会执行(条件&&也是两边都要判断),而条件||如果在其左边的表达式是正确的,那么右边不会执行。#include using namespace std;int main(){ int a=2,b=-1; if(a>1||(b++==0)) cout cout if(a>1|(b++==0)) cou原创 2015-11-29 11:35:00 · 519 阅读 · 0 评论