C11简洁之道:tupe元祖】的更多相关文章

tuple元组是一个固定大小不同类型的值的集合,是泛化的std::pair.我们也可以把它当作一个通用的结构体来使用,不需要创建结构体有获取结构体特征,在某些情况可以取代结构体,使程序更简洁.直观. tuple在C++11中使用简单,但是往往要和模板元的一些技巧结合使用. tuple<); //构造一个tuple 这个tuple等同于结构体: struct A { char *p; int len; }; 另外一种方法也可以创建元组:std::tie,它会创建一个元组的左值引用. auto tp…
1.  概述 C++11里面引入了auto和decltype关键字来实现类型推导,通过这两个关键字不仅能方便的获取复杂的类型,还能简化书写,提高编码效率. 2.  auto 2.1 auto关键字的新定义 auto关键字并不是一个全新的关键字,早在旧标准中就已经有定义:“具有自动储存期的局部变量”,不过用处并不大,如下: auto ; //c++98/03,可以默认写成int i = 0; ; 上述代码中,auto int是旧标准中的用法,与之相对的是static int,代表了静态类型的定义方…
1.  定义 lambda表达式是C++11非常重要也是很常用的特性之一,来源于函数式编程的概念,也是现代编程语言的一个特点.它有如下特点: 声明式编程风格:就地匿名定义目标函数或者函数,不需要额外写一个命名函数或者函数对象,以更直接的方式写程序. 简洁:不需要额外再写一个函数或者函数对象,避免了代码膨胀和功能分散. 在需要的时间和地点实现功能闭包,使程序更加灵活. lambda表达式定义一个匿名函数,并且可以捕获一定范围内的变量,其定义如下: [captrue] (params) opt ->…
1.  可调用对象 在C++中,有“可调用对象”这么个概念,那么什么是调用对象呢?有哪些情况?我们来看看: 函数指针: 具有operator()成员函数的类对象(仿函数): 可以被转换为函数指针的类对象: 类成员(函数)指针. 我们来看代码: //函数指针 void func(void) { //... } struct Foo { void operator()(void) { //... } }; struct Bar { using fr_t = void(*)(void); static…
1.  for循环的新用法 在C++98/03中,通过for循环对一个容器进行遍历,一般有两种方法,常规的for循环,或者使用<algorithm>中的for_each方法. for循环遍历: void func(void) { std::vector<int> arr; for(auto it = arr.begin(); it != arr.end(); ++it) { std::cout << *it << std::endl; } } for_eac…
1.  C++98/03初始化 我们先来总结一下C++98/03的各种不同的初始化情况: //普通数组 ] = {, , }; //POD(plain old data) struct A { int x; struct B { int i; int j; }b; }a = {, {, }}; //拷贝初始化 ; class Foo { public: Foo(int){}; }Foo = ; //直接初始化 ); 这些不同的初始化方法都有各自的适用范围和方法,但是种类繁多的方法却没有一种可以通…
1.  右尖括号 我们在C++98/03中使用泛型编程的时候,经常遇到“>>”被当作右移操作符,而不是模板参数的结尾.假如我们有如下代码: template <typename T> class Foo{}; void func(void) { vector<Foo<int>> test; } 使用C++98/03的时候会出现如下错误: hello.c::: error: ‘>>’ should be ‘> >’ within a n…
#昨日作业解析: # s = 'sadagwa'# i = 0# while i < len(s):# s1 = s[i]# print(s1)# i += 1# while使用技巧,先找递增变量或者递减变量 #简单的加法计算器 print在输入多种元素时要用逗号隔开# content = input('计算:').strip()# s1 = content . split('+')# num = 0# for i in s1:# num += int(i)# print(num) # s =…
Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 import collections # 初始化一个计数器 c = collections.Counter('sldfjoaoaufdlfuaof') print(c) # Counter({'f': 4, 'o': 3, 'a': 3, 'd': 2, 'u': 2, 'l': 2, 'j': 1,…
Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)   Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 import collections # 初始化一个计数器 c = collect…