arr;
// set values:
std::get<0>(arr) = 1;
std::get<1>(arr) = 2;
std::get<2>(arr) = 3;
// get values:
std::cout << "(" << std::get<0>(arr) << ", " << std::get<1>(arr)
<< ", " << std::get<2>(arr) << ")\n";
运行结果:
(28, 28, 10, data, prob)
(1, 2, 3)
#include &lt;iostream&gt;#include &lt;tuple&gt;#include &lt;array&gt; int main(){ typedef std::tuple&lt;int, int, int, std::string, std::string&gt; DATA_INFO; //initialization value ...
模板函数
std
::get<n>()是一个辅助函数,它能够获取到容器的第 n 个元素。模板参数的实参必须是一个在编译时可以确定的常量表达式,编译时会对它检查。
get<n>()模板提供了一种不需要在运行时检查,但能用安全的索引值访问元素的方法。
在
std
::
array
中,提供了2种访问元素的方法:[]和at()
1 #include <iostream&...
std
::
tuple
是C++ 11中引入的一个非常有用的结构,以前我们要返回一个包含不同数据类型的返回值,一般都需要自定义一个结构体或者通过函数的参数来返回,现在
std
::
tuple
就可以帮我们搞定。
1.引用头文件
#include
2.
Tuple
初始化
std
::
tuple
的初始化可以通过构造函数实现。
// Creating and Initializing a
tuple
std
::
tuple
result1 { 22, 19.28, "text" };
这种初始化方式要定义各个元素的数据类型,比较繁琐,
增强PFR
这是一个C ++ 14库,用于非常基本的反射,使您可以按索引访问结构元素,并为用户定义的类型提供其他
std
::
tuple
类的方法,而无需任何宏或样板代码。
测试覆盖率
激励实例#0
# include < iostream>
# include < fstream>
# include < string>
# include " boost/pfr.hpp "
struct some_person {
std
::string name;
unsigned birth_year;
int main ( int argc, const char * argv[]) {
some_person val{ " Edgar Allan Poe " , 1809 };
std
::cout << boost>(val) // No macro!
<< " was born in " << boost>(val
template<
std
::size_t I, class… Types >typename
std
::
tuple
_element<I,
tuple
<Types…> >::type& get(
tuple
<Types…>& t ) noexcept;
(since C++11)(constexpr since C++14)
template<
std
::size_t I, class… Types...
tuple
源码
template <typename Head , typename... Tail>
class
tuple
<Head, Tail> : private
tuple
<Tail...>{
protected:
Head m_head;
public:
tuple
(Head h , Tail... t) : m_head(h),
tuple
<Tail...>(t){}
在之前的文章C++11
std
::
tuple
中
使用
std
::get获取
std
::
tuple
元素的例子。
std
::get除了通过索引(C++11)获取
std
::
tuple
的元素,还能通过元素类型获取元素(C++14)
// 头文件 <
tuple
>
template<
std
::size_t I, class... Types >
typename
std
::
tuple
_element<I,
tuple
<Types...> >::type&am
template<
std
::size_t I, class T,
std
::size_t N >
constexpr T& get(
std
::span<T,N> s ) noexcept;
获得到 span s 的第 I 个元素的引用。
该 span 必须拥有静态长度(即 N !=
std
::dynamic_ex...
C++11引入了一个新的较实用的模板类型,
std
::
tuple
,也即是元组。元组是一个固定大小的不同类型(异质,heterogeneous)值的集合,也即它可以同时存放不同类型的数据。
类似于python中用小括号表示的元组类型。C++已有的
std
::pair类型类似于一个二元组,可看作是
std
::
tuple
的一个特例,
std
::
tuple
也可看作是
std
::pair的泛化。
tuple
是一个固定大小的不同类型值的集合,是泛化的
std
::pair。我们也可以把它当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。
std
::
tuple
理论上可以有无数个任意类型的成员变量,而
std
::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要
使用
tuple
元组了。
二、
tuple
的
使用
std
::string name;
std
::
tuple
<string &, int>.
dpkg: warning: files list file for package `*****' missing, assuming package has no files currently
采橘东篱下…:
dpkg: warning: files list file for package `*****' missing, assuming package has no files currently
采橘东篱下…:
ViT-YOLO论文解读
weixin_43670131:
ViT-YOLO论文解读
寂静之地:
代码C++, opencv实现人脸识别,人脸检测,人脸匹配,视频中的人脸检测,摄像头下的人脸检测等
菠萝粹雪: