c++学习
米安r
这个作者很懒,什么都没留下…
展开
-
c++中std::hash的以及万能hash使用方法
首先是标准库中的std::hash函数,对于内置的类型,标准库中是已经提供了的(包括std::string),但是若是自己自定义的类型想要求其哈希值的话,就需要自己定义其哈希值的求值方式。下面是简单示范#include <map>#include <unordered_map>#include <unordered_set>#include <iostream>using std::cout;using std::endl;class My原创 2020-07-11 13:24:41 · 27577 阅读 · 0 评论 -
std::bind的几种用法
#include <queue>#include <map>#include <iostream>#include <functional>//adapter测试using namespace std::placeholders;using std::cout;using std::endl;struct Functor : public std::binary_function<int, int, void> //比较标准的f原创 2020-07-10 21:21:30 · 770 阅读 · 0 评论 -
c++中&& 和 ||的运算顺序及次数
结论:两者都是从左到右进行运算,且一旦能够得到结果,右边的表达式就不会被调用。验证如下:bool expr1(bool lhs){ cout << "expr1 called" << endl; return lhs;}bool expr2(bool rhs){ cout << "expr2 called" << endl; return rhs;}int main(){ expr1(1 > 2) &原创 2020-06-05 11:24:37 · 1863 阅读 · 0 评论 -
模板函数中的显式实例化和显式具体化
当我们定义了一个模板函数时,每当我们调用这个函数时,这个模板就会为我们生成函数定义,但是我们处理某些例子时可能需要我们进行另外一种操作,这时就需要显式具体化了(explicit specialization),先看个例子吧假设我们定义了一个加法的函数模板template <typename T>T add(T a, T b){ return a + b;}当我们使用时传入的数据类型是内置类型,如int,double,float等,这个是没有问题的。假设我现在定义一个复数类型,且原创 2020-06-01 15:29:31 · 1145 阅读 · 0 评论 -
vs中配置OpenGl环境
首先用到的ide是vs2017版,新点旧点差别不是很大。用到的库有GLFW,GLEW,glm。参考的是the cherno的教程(B站有他的搬运视频)。首先是配置GLFW,让我们可以有一个可视化界面。这个可以在GLFW 的官网里下载https://www.glfw.org/download.html,点进去后下载的是32位的二进制文件,网站打不开或者下载不了的话在我的百度网盘里有链接:https://pan.baidu.com/s/1DBsvGgcG0OzsNzZkctqAoQ提取码:rzlu接下原创 2020-05-25 19:30:40 · 899 阅读 · 2 评论 -
c++中如何使用可变参数的函数(学习笔记)
在c++中我们需要同种函数拥有不同种的功能时,首先想到的函数重载,但是重载种类比较多时我们会使用模板函数(或者是模板函数重载以及模板函数的具体化)来帮助我们更加泛化,但这些方法的特点是函数参数的个数是确定的,假如我们需要参数个数是可以动态变化的话,上面的几个方法就不够用了。这时我们就可以使用variadic template以及initializer_list来解决这个问题。用print函数来演示上述两种方法void print() {}template <typename T,typename原创 2020-05-09 23:36:01 · 435 阅读 · 0 评论