std::reference_wrapper

来自cppreference.com
< cpp‎ | utility‎ | functional

 
 
 
函数对象
函数包装
(C++11)
(C++11)
(C++17)
绑定
(C++11)
引用包装
reference_wrapper
(C++11)
(C++11)
(C++11)
运算符包装
取反器
(过时)
(过时)

(过时)
查找器
旧绑定器与适配器
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)

(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
 
std::reference_wrapper
成员函数
原文:
Member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <functional>
template< class T >
class reference_wrapper;
(C++11 起)
类模板std::reference_wrapper是一个CopyConstructibleCopyAssignable的包装对象或引用的类型T的参考。 std::reference_wrapper实例对象(可以被复制或存储在容器中),但它们是隐式转换T&,使它们可以被用来作为参数的功能,采取通过引用基础类型.
原文:
Class template std::reference_wrapper is a CopyConstructible and CopyAssignable wrapper around a reference to object or reference to function of type T. Instances of std::reference_wrapper are objects (can be copied or stored in containers), but they are implicitly convertible to T&, so that they can be used as arguments with the functions that take the underlying type by reference.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Helper函数std::refstd::cref也常常用于生成std::reference_wrapper对象.
原文:
Helper functions std::ref and std::cref are often used to generate std::reference_wrapper objects.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::reference_wrapper也可用于std::bind或参考std::thread的构造函数来传递对象.
原文:
std::reference_wrapper is also used to pass objects to std::bind or to the constructor of std::thread by reference.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 会员类型

类型
原文:
type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
definition
type T
result_type
T如果T的返回类型是一个函数。否则,没有定义
原文:
The return type of T if T is a function. Otherwise, not defined
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
argument_type
1)如果T是一个函数或函数指针,它有一个参数的类型A1,然后argument_typeA1.

2)如果T是一个T0不带任何参数类的成员函数的指针,然后argument_typeT0*,可能CV-qualified

3)如果T是一个类类型的成员类型T::argument_type,然后argument_type是一个别名
原文:
1) if T is a function or pointer to function that takes one argument of type A1, then argument_type is A1.

2) if T is a pointer to member function of class T0 that takes no arguments, then argument_type is T0*, possibly cv-qualified

3) if T is a class type with a member type T::argument_type, then argument_type is an alias of that
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
first_argument_type
1)如果T是一个函数或指针的函数,它接受两个参数类型为SA1A2,然后first_argument_typeA1.

2)如果T是一个指针,指向成员函数的类T0它有一个参数,然后first_argument_typeT0*,可能CV-qualified
3)如果T是一个类类型的成员类型T::first_argument_type,然后first_argument_type是一个别名

原文:
1) if T is a function or pointer to function that takes two arguments of type s A1 and A2, then first_argument_type is A1.

2) if T is a pointer to member function of class T0 that takes one argument, then first_argument_type is T0*, possibly cv-qualified
3) if T is a class type with a member type T::first_argument_type, then first_argument_type is an alias of that

文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
second_argument_type
1)如果T是一个函数或指针的函数,它接受两个参数类型为SA1A2,然后second_argument_typeA2.

2)如果T是一个T0它有一个参数A1类的成员函数的指针,然后second_argument_typeA1,可能CV-qualified

3)如果T是一个类类型的成员类型T::second_argument_type,然后first_argument_type是一个别名
原文:
1) if T is a function or pointer to function that takes two arguments of type s A1 and A2, then second_argument_type is A2.

2) if T is a pointer to member function of class T0 that takes one argument A1, then second_argument_type is A1, possibly cv-qualified

3) if T is a class type with a member type T::second_argument_type, then first_argument_type is an alias of that
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 成员函数

存储一个参考在一个新std::reference_wrapper对象
原文:
stores a reference in a new std::reference_wrapper object
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
重新绑定std::reference_wrapper
原文:
rebinds a std::reference_wrapper
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
访问所存储的参考
原文:
accesses the stored reference
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
调用其所存储的函数
(公开成员函数) [编辑]

[编辑] 示例

演示如何使用的reference_wrapper作为一个容器的引用,这使得它能够访问相同的容器中,使用多个索引
原文:
Demonstrates the use of reference_wrapper as a container of references, which makes it possible to access the same container using multiple indexes
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

#include <algorithm>
#include <list>
#include <vector>
#include <iostream>
#include <functional>
 
int main()
{
    std::list<int> l = {-4, -3, -2, -1, 0, 1, 2, 3, 4};
 
    std::vector<std::reference_wrapper<int>> v(l.begin(), l.end());
    std::random_shuffle(v.begin(), v.end());
 
    std::vector<std::reference_wrapper<int>> v2(v.begin(), v.end());
    std::partition(v2.begin(), v2.end(), [](int n){return n<0;});
 
    std::cout << "Contents of the list: ";
    for(int n: l) {
        std::cout << n << ' ';
    }
    std::cout << '\n';
 
    std::cout << "Contents of the list, shuffled: ";
    for(int i: v) {
        std::cout << i << ' ';
    }
    std::cout << '\n';
 
    std::cout << "Shuffled elements, partitioned: ";
    for(int i: v2) {
        std::cout << i << ' ';
    }
    std::cout << '\n';
}

输出:

Contents of the list: -4 -3 -2 -1 0 1 2 3 4
Contents of the list, shuffled: 0 -1 3 4 -4 1 -2 -3 2
Shuffled elements, partitioned: -3 -1 -2 -4 4 1 3 0 2

[编辑] 另请参阅

(C++11)
(C++11)
创建类型从参数可推导的std::reference_wrapper
(函数模板) [编辑]
(C++11)
对函数对象绑定一个或多个参数
原文:
binds one or more arguments to a function object
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]