#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. html-文本属性

    1.文本标记线 text-decoration: 下划线-underline 删除线-line-through 上划线-overline 2.文本大小写 text-transform 默认值none ...

  2. leetcode127

    class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordLi ...

  3. MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...

  4. MYSQL查询优化:show profile

    为避免之前已经把 SQL 存放在 QCACHE 中, 建议在执行 SQL 时, 强制 SELECT 语句不进行 QCACHE 检测.这样可以提交分析的准确性 mysql> select sql_ ...

  5. one by one 项目 part 5

    问题汇总 一.Can't connect to MySQL server on 'localhost' (10061)翻译:不能连接到 localhost 上的mysql分析:这说明“localhos ...

  6. git基本命令之删除撤销操作

    1.将删除文件恢复--撤销所删除的文件git checkout 文件名 2.git resetgit reset --hard commitID(或某个节点)----强制切换到某个点,会导致所修改的内 ...

  7. window环境mysql解压版配置

    1.下载并解压 到官网下载mysql-5.5.10-win32.zip,然后将mysql解压到任意路径,如:C:\mysql-5.5.10-win32 2.设置环境变量 打开计算机->属性-&g ...

  8. datagrid数据表格的维护

    想想刚开始学jsp, 用application做一个简单的数据库, 简单的注册页面, 跟这个相比就是过家家 <%@ page language="java" contentT ...

  9. keras—神经网络CNN—CIFAR_10图像识别

    1 from keras.datasets import cifar10 from keras.utils import np_utils import matplotlib.pyplot as pl ...

  10. Java获取资源文件

    比如我们有以下目录 |--project |--src |--javaapplication |--Test.java |--file1.txt |--file2.txt |--build |--ja ...