迫于拙劣的cpp水平,来补补以前忽略掉的cpp细节。
老规矩,先放资料。
参考资料:
A Gentle Introduction to C++ IO Streams
“Designing and implementing a general input/output facility for a programming language is notoriously difficult”
Bjarne Stroustrup Stream的基本认识 # 说说我的理解。stream(流)可以看做输入输出的抽象。我们通过流可以忽略掉device的细节,采取同样的输入输出方式。
接触 Eigen 的原因是最近在看 caffe/caffe2 源码,caffe2 中使用了 Eigen 库。Eigen 是一个基于 C++ 模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便。对于 Linux 用户,只需要把头文件放到 /usr/include 下即可。此外,Eigen 的接口清晰,稳定高效。
前置技能点:
gnu make
linux下.so,.a,.o文件
cmake是一个工具,也可以看成一门语言。
学习cmake最大的障碍在于看不懂全是大写的英文
学习cmake主要参考了《cmake practice》
CUDA 编程涉及到在不同的平台上同时运行代码:包含 CPU 的 host 和包含 GPU 的 device。
所以了解 host 和 device 的差异对性能优化是非常重要的。
2.1. Differences between Host and Device # Threading resources # host 上能同时运行的线程数目比较少(比如 24 个)。
可以了解成并行版的STL(?
过了一遍nvidia的官方网文档
发现如果熟悉STL的话,thrust没什么太多好说的,看起来很简单…
不过还是开一篇记录一下,一段时间内估计要和cuda c++ 打交道,就当记录使用过程中遇到的问题吧.
由于发现cuda c++ 的 debug方式和c++ 差别很大,因此打算再开一篇,专门记录一些和error checking 以及debug有关的内容.
Error checks in CUDA code can help catch CUDA errors at their source. There are 2 sources of errors in CUDA source code:
qt_5.9_ui_doc
还是比直接写代码方便点。。。所以不妨学习一个!
以及。。。qt在2017年6月1号发布了5.9。。。所以之前是5.8。。。现在变成5.9了。。。
遇到了修改了ui文件却没有生效的问题。。。
des的基本搞定了,打包。
在linux下打包成exe,实在是没什么好办法的样子。
嘛。转念一想。老师说是打包成可执行文件。。。没说一定是exe啊。
然后也许我就零分了呢2333
update3:
终于知道了正确的学习姿势…
用百度把要用的东西大概描述出来,然后总能找到一个是你要的。。。
然后再去搜关键词。。。
嗯。。百度还是很有用的啊2333
qt5.8_doc_Line Edits Example
所以现在要把之前写成dialog的几个改回Line edit
感觉其实。。。更像是一种规范。。。?而不是一种具体要求吧。。。
转自 # 头文件(.h): # 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。
先来放一波过程中用到的资料和官方文档好了。
basic layout_qt5.8
QBoxLayout Class_qt5.8
QString Class 5.8
QChar Class qt 5.8
Standard Dialogs Example qt 5.8
更新的部分还是放在最前面好了。
convert from QString to char *的时候有个坑。
In order to convert a QString to a char*, then you first need to get a latin1 representation of the string by calling toLatin1() on it which will return a QByteArray. Then call data() on the QByteArray to get a pointer to the data stored in the byte array. See the documentation: See the following example for a demonstration:
嘛。。为了系统安全课来学一波qt…
现在算是写出了一个可以打开文件,保存文件的记事本。
接下来要搞定的事情是,如何写一个自定义的事件?比如计算个开方之类的。
基本全文照搬了:关于C++ const 的全面总结
总结全面还是要一点时间的orz..感谢原作者,暂时没发现有什么错误(?
其中对我而言比较陌生的是“const修饰成员函数”的用法。。已经加粗。
回想起大一的时候打cf…那个时候对C++还不怎么熟悉。。。用sort不会自定义排序方式。。
于是手写快排。。。直接取中间元素没加随机化。。。跪了。。。
后来知道sort怎么写以后。。发现sort是可以通过的。。。
起因是百度实习二面的时候被问了一道类似这样的题:
给我下面的代码,问有没有什么问题。
1/* *********************************************** 2Author :111qqz 3Created Time :2017年02月28日 星期二 14时49分37秒 4File Name :vector.cpp 5************************************************ */ 6#include <cstdio> 7#include <vector> 8#include <ctime> 9using namespace std; 10int func( int x ) //此处函数的条件是不单调...这样才可以触发问题. 11{ 12 return (x-50)*(x-50)+1; 13} 14int main() 15{ 16 17 vector<int>vec; 18 int *pint = NULL; 19 for ( int i = 0 ; i < 100 ; i++) 20 { 21 int x = func(i); 22 vec.push_back(x); 23 if (x<500) 24 { 25 pint = & vec[0]; 26 } 27 } 28 if (pint) 29 *pint = 0 ; 30 int siz = vec.size(); 31 for ( int i = 0 ; i < siz ; i++) printf("%d\n",vec[i]); 32 return 0; 33} 面试的时候只给了部分代码,func函数没有给出。
昨天终于搞定了ycm对c++11的支持….
嘛,17都快出来了,我竟然连11都不会用。
不过突然把所有的11特性给我也没办法全部吸收。
所以在这里记录下用过的c++11的用法。
一般有两个
1static int a; 2int b; 3void func(void) 4{ 5 static int c=0; 6 int d; 7} 在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。 ** c和d的区别是,d是一个自动变量,func函数执行完后,d会自动被释放。但c却不会被释放,下一次调用func函数时,c的值会保留上次的值继续使用(而不是初始值0,初始化只会在函数第一次被调用的时候执行)**
如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择。