#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)的更多相关文章

  1. stl学习记录(1)

    Effective STL 中文版学习记录 条款4 判断容器是否为空 使用empty而不是size().size()操作在实现上不是一个时间常数操作条款5 尽量使用区间成员函数代替它们的单元素兄弟.S ...

  2. c++ STL 学习记录 草稿。

    非常丑陋的尝试实现stl.慢慢修改吧. 1)简单实现 vector和list. 2)思索如何开始编写算法. 1,所有容器继承一个抽象容器.那么算法就可以使用抽象基类的next方法来遍历元素. 容器间耦 ...

  3. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  4. ###STL学习--函数对象

    点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...

  5. Effective STL 学习笔记 Item 30: 保证目标区间足够大

    Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...

  6. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  7. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  8. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  9. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

随机推荐

  1. 20165233 2017-2018-2 《Java程序设计》第八周学习总结

    20165233 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 基础:Java中的线程,Thread类与线程的创建 - 线程是比进程更小的单位. - JVM ...

  2. jsp 调用其他jsp页面 跳转

    response.sendRedirect("test2.jsp"); window.location.reload("test2.jsp"); locatio ...

  3. mysql find_in_set排序

    假若有给定id数组(1,9,3,5,6);查询sql语句需要安装这个顺序排序 select * from tb where id in (1,9,3,5,6) order by find_in_set ...

  4. 泛型集合与DataSet相互转换

    一.泛型转DataSet /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name=" ...

  5. JS时间转时间戳,时间戳转时间。时间显示模式。

    函数内容 // 时间转为时间戳 function date2timestamp(datetime) { var timestamp = new Date(Date.parse(datetime)); ...

  6. heat 用法 示例

    heat.exe dir "./SampleFolder" -cg Files -dr INSTALLDIR -gg -g1 -sf -srd -var "var.Tar ...

  7. 转载:mysql binlog同步redis

    ref: https://wenku.baidu.com/view/5d9d04ac6394dd88d0d233d4b14e852458fb39c4.html

  8. jemalloc for mysql

    ptmalloc 是glibc的内存分配管理 tcmalloc 是google的内存分配管理模块 jemalloc 是BSD的提供的内存分配管理 三者jemalloc和tcmalloc的性能不分伯仲, ...

  9. vim nginx配置文件时具备语法高亮功能

    1.下载nginx.vim 下载页面:http://www.vim.org/scripts/script.php?script_id=1886 wget http://www.vim.org/scri ...

  10. 吴裕雄 数据挖掘与分析案例实战(15)——DBSCAN与层次聚类分析

    # 导入第三方模块import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfr ...