C++ STD Gems06
generate、generate_n、sample、iota
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <random>
template<class Container>
void write_to_cout(Container& container, const char* delimiter = " ")
{
std::copy(container.begin(), container.end(),
std::ostream_iterator<typename Container::value_type>(std::cout, delimiter) );
}
void test0()
{
std::vector<int> v(5, 10);
v.reserve(10);
std::fill_n(std::back_inserter(v), 10, 111);
write_to_cout(v);
std::cout << std::endl << std::endl;
std::fill(v.begin() + 5, v.begin() + 7, 13);
write_to_cout(v);
std::cout << std::endl << std::endl;
}
void test1()
{
std::vector<int> v(10);
std::iota(v.begin(), v.end(), 0);
write_to_cout(v);
std::cout << std::endl << std::endl;
}
void test2()
{
std::mt19937 rng( std::random_device{}() );
std::uniform_int_distribution<int> d( 0,20 );
std::vector<int> v;
std::generate_n( std::back_inserter(v), 5, [val = 0]() mutable
{
const auto old = val;
val += 3;
return old;
} );
write_to_cout(v, " | ");
std::cout << std::endl << std::endl;
}
void test3()
{
std::vector<std::string> b = {"zero", "one", "two", "three", "four", "five", "six", "seven"};
std::mt19937 rng( std::random_device{}() );
write_to_cout(b);
std::cout << std::endl;
std::vector<std::string> v;
// test algrithm c++17
std::sample( b.begin(), b.end(), back_inserter(v), 4, rng );
write_to_cout(v);
std::cout << std::endl << std::endl;
}
int main()
{
test0();
test1();
test2();
test3();
return 0;
}
C++ STD Gems06的更多相关文章
- 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...
- C++ std::set
std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...
- C++ std::priority_queue
std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...
- C++ std::queue
std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...
- C++ std::multimap
std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...
- C++ std::map
std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...
- C++ std::list
std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...
- C++ std::forward_list
std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...
- C++ std::deque
std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...
随机推荐
- Random Process Modeling_1
1. Bertrand Triangle r=1; %circle radius x0=0; y0=0; %centre of circle %points for circle t=linspace ...
- Python栈溢出【新手必学】
python3.5.4 递归函数最恶心的时候莫非栈溢出(Stack overflow).PS:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个P ...
- jmeter学习笔记---循环控制器计数器函数助手
循环控制器与计数器,以及函数助手需要配合使用,实现循环 循环控制器的“循环次数”输入最大循环次数的参数 计数器:除输入最大值外,还需要输入“引用名称”,供后续请求使用 请求中,如果需要实现循环,需要借 ...
- Rabbitmq与spring整合之重要组件介绍——AMQP声明式配置&RabbitTemplate组件
上一节是使用rabbitAdmin的管理组件进行声明队列,交换器,绑定等操作,本节则是采用AMQP声明式配置来声明这些东西.AMQP声明主要是通过@Bean注解进行的. 配置: package com ...
- Vuex - state , getters , mutations , actions , modules 的使用
1, 安装 vue add vuex 2, 安装完之后会自动生成store文件夹,并在main.js中自动引用 store/index.js 3,在store文件夹下的index.js中定义 ...
- 1、MYSQL 数据库的安装与配置
安装 1.打开官网https://www.mysql.com,选择社区版本 2.如图点击下在安装(本人在下载过程中亲身感觉下载时间非常漫长,需要等待,不知道为啥会有限速,可以参考网上教程用迅雷进行 ...
- c# copydata 消息
using PublicCode; using System; using System.Collections.Generic; using System.ComponentModel; using ...
- JAVA CookieUtil
package com.itheima.shop.utils; import java.io.UnsupportedEncodingException; import java.net.URLDeco ...
- 一个有意思的html验证码: namesilo验证码
买域名的时候看到的一个验证码,感觉蛮有意思的(https://www.namesilo.com/create_account.php),这个质感看上去就不一样: 查看页面源码,果然这个验证码是用htm ...
- redis主从遇到的问题
rendis安装 主从切换 Redis的HA方案 Redis高可用架构(1)—Keepalive+VIP 还是配置的问题 从一直无法连接上主 redis.conf配置 # Examples:# 1 ...