stl学习记录(2)
#include <iostream>
#include <utility>
#include <tuple>
#include <complex>
#include <string> using namespace std; // 代码 改编自 C++标准库——自学教程与参考手册 英文第二版 //====================================
// tuple io
template <int IDX,int MAX,typename... Args>
struct PRINT_TUPLE{
static void print(ostream& strm, const tuple<Args...>& t){
strm << get<IDX>(t) << (IDX + == MAX ? "" : ",");
PRINT_TUPLE<IDX + , MAX, Args...>::print(strm,t);
}
}; template <int MAX,typename... Args>
struct PRINT_TUPLE<MAX, MAX, Args...>{
static void print(ostream& strm, const tuple<Args...>& t){
}
}; template <typename... Args>
ostream& operator << (ostream& strm,
tuple<Args...>& t)
{
strm << "[";
PRINT_TUPLE<, sizeof...(Args), Args...>::print(strm,t);
return strm << "]";
} //==================================== class Foo{
public:
Foo(tuple<int, float>){
cout << "Foo::Foo(tuple)" << endl;
} template <typename... Args>
Foo(Args... args){
cout << "Foo::Foo(atgs...)" << endl;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
// cpp11 后 一些新语法 在STL中得使用
tuple<int, double>t(,2.22); pair<int, Foo>p1(, t); pair<int, Foo>p2(piecewise_construct, make_tuple(), t); // 使用 ref() 表示对变量的引用
int i = ;
auto p = make_pair(ref(i), ref(i)); // 创建 pair<int&,int&>
++p.first;
++p.second;
cout << "i = " << i << endl; // tie() 演示
pair<char, char> q = make_pair('c','b');
char c;
tie(ignore, c) = q; // char c == 'b' //
tuple<string, int, int, complex<double>> tt;
tuple<int, double,string> t1(,6.3,"nico"); cout << get<>(t1) << " ";
cout << get<>(t1) << " ";
cout << get<>(t1) << " ";
cout << endl; auto t2 = make_tuple(,,"nico");
get<>(t1) = get<>(t2);
t1 = t2; // tuple io
tuple <int, double, string> iot(, 1.1, "more light");
cout << "io: " << iot << endl; return ;
}
cpp11stl的例子 VS2013下编译 通过
stl序列容器例子
cpp11 vs2013下编译 通过
#include <memory>
#include <vector>
#include <array>
#include <string>
#include <list>
#include <iostream>
#include <functional>
#include <forward_list> using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
array<string, > arrcoll = { "hello", "world" };
for (auto elem : arrcoll)
{
cout << elem << ' ';
}
cout << endl; list<char> listcoll;
for (char c = 'a'; c <= 'z'; ++c)
{
listcoll.push_back(c);
} for (auto elem : listcoll)
{
cout << elem << ' ';
}
cout << endl; //createforward-listcontainerforsomeprimenumbers
forward_list<long> coll = { , , , , , , };
//resizetwotimes
//-note:poorperformance
coll.resize();
coll.resize(, );
//printallelements:
for (auto elem : coll) {
cout << elem << ' ';
}
cout << endl; return ;
}
stl学习记录(2)的更多相关文章
- stl学习记录(1)
Effective STL 中文版学习记录 条款4 判断容器是否为空 使用empty而不是size().size()操作在实现上不是一个时间常数操作条款5 尽量使用区间成员函数代替它们的单元素兄弟.S ...
- c++ STL 学习记录 草稿。
非常丑陋的尝试实现stl.慢慢修改吧. 1)简单实现 vector和list. 2)思索如何开始编写算法. 1,所有容器继承一个抽象容器.那么算法就可以使用抽象基类的next方法来遍历元素. 容器间耦 ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- ###STL学习--函数对象
点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...
- Effective STL 学习笔记 Item 30: 保证目标区间足够大
Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
随机推荐
- springboot-dokcer
项目就一个java文件,仅用于样例 package com.example.demo; import org.springframework.beans.factory.annotation.Valu ...
- uva-208-枚举-并查集
题意: 给你一个图,从1到指点的点有多少种不同的路径,用了并查集剪枝,如果当前节点的根不是指定的节点,直接返回,会超时 time limit了俩次,wa了俩次,PE俩次 #include <io ...
- Screen Monitors
Screen Screen->MonitorCount Monitors Screen->FormCount Screen->Forms[I]->Name
- webstorm使用
1. 打开toolbar 2. 安装vue.js 3. 设置new vue file模板 <template> <div> <header-component/> ...
- Git .gitignore使用 -- 过滤class文件或指定目录
1. 进入当前的项目根目录 执行 git init touch .gitignore 2. 过滤class文件或指定目录 *.class /target/ 3. 提交 git add . 将所有文件提 ...
- from __future__ import division
导入python未来支持的语言特征division(精确除法),当我们没有在程序中导入该特征时,"/"操作符执行的是截断除法(Truncating Division),当我们导入精 ...
- zookeeper介绍以及安装配置
Zookeeper启动时默认将Zookeeper.out输出到当前目录,不友好.改变位置有两种方法: 1:在当前用户下~/.bash_profile或在/etc/profile,添加ZOO_LOG_D ...
- Haskell语言学习笔记(52)正则表达式
Text.Regex.PCRE.Heavy $ brew install pcre $ cabal install pcre-heavy Installed pcre-heavy-1.0.0.2 Pr ...
- C++ 0x std::async 的应用
#include <iostream> #include <thread> #include <mutex> #include <vector> #in ...
- hadoop无法启动常见原因
1.Could not chdir to home directory /home/USER: Permission denied 启动datanode时会报这个错误,尝试利用ssh登录datanod ...