• <small id='jIDob'></small><noframes id='jIDob'>

      • <bdo id='jIDob'></bdo><ul id='jIDob'></ul>
      <legend id='jIDob'><style id='jIDob'><dir id='jIDob'><q id='jIDob'></q></dir></style></legend><tfoot id='jIDob'></tfoot>

      <i id='jIDob'><tr id='jIDob'><dt id='jIDob'><q id='jIDob'><span id='jIDob'><b id='jIDob'><form id='jIDob'><ins id='jIDob'></ins><ul id='jIDob'></ul><sub id='jIDob'></sub></form><legend id='jIDob'></legend><bdo id='jIDob'><pre id='jIDob'><center id='jIDob'></center></pre></bdo></b><th id='jIDob'></th></span></q></dt></tr></i><div id='jIDob'><tfoot id='jIDob'></tfoot><dl id='jIDob'><fieldset id='jIDob'></fieldset></dl></div>

        什么(模板)重新绑定&lt;&gt;做?

        时间:2024-08-14

        • <i id='Btkm8'><tr id='Btkm8'><dt id='Btkm8'><q id='Btkm8'><span id='Btkm8'><b id='Btkm8'><form id='Btkm8'><ins id='Btkm8'></ins><ul id='Btkm8'></ul><sub id='Btkm8'></sub></form><legend id='Btkm8'></legend><bdo id='Btkm8'><pre id='Btkm8'><center id='Btkm8'></center></pre></bdo></b><th id='Btkm8'></th></span></q></dt></tr></i><div id='Btkm8'><tfoot id='Btkm8'></tfoot><dl id='Btkm8'><fieldset id='Btkm8'></fieldset></dl></div>

          <small id='Btkm8'></small><noframes id='Btkm8'>

            • <bdo id='Btkm8'></bdo><ul id='Btkm8'></ul>
              <tfoot id='Btkm8'></tfoot>

                1. <legend id='Btkm8'><style id='Btkm8'><dir id='Btkm8'><q id='Btkm8'></q></dir></style></legend>
                    <tbody id='Btkm8'></tbody>
                  本文介绍了什么(模板)重新绑定&lt;&gt;做?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  试图了解更多关于标准库是如何实现的,我正在检查 Visual Studio 中的所有容器.在这里我看到了一些奇怪的结构:

                  trying to learn more about how the standard library is actually implemented I'm inspecting all containers in visual studio.. Here I see some curious structure:

                  std::list<>的某个基类中找到以下typedef

                  In some base class of a std::list<> The following typedef is found

                  typedef typename _Alloc::template rebind<_Ty>::other _Alty;
                  

                  其中_Alloc"对应于分配器模板参数(和 _Ty 包含的类型).我很难找到对这个关键字"的一个很好的解释.到目前为止我发现的最好的事情是它是分配器接口的一部分.尽管即使 cppreference 也不能很好地解释这一点.

                  Where "_Alloc" corresponds with the allocator template argument (and _Ty the contained type). I have trouble finding a good explanation of this "keyword". Best thing I've found so far is that it is part of the allocator interface. Though even cppreference isn't very good in explaining this.

                  这个模板重新绑定<>有什么作用?为什么需要在那个位置?

                  What does this template rebind<> do? And why is it necessary at that location?

                  推荐答案

                  _Alloc 模板用于获取某种类型的对象.容器可能需要分配不同类型的对象.例如,当您有一个 std::list 时,分配器 A 旨在分配 T 类型的对象,但是std::list 实际上需要分配一些节点类型的对象.调用节点类型 _Tystd::list 需要为正在使用的 _Ty 对象获取分配器A 提供的分配机制.使用

                  The _Alloc template is used to obtain objects of some type. The container may have an internal need to allocate objects of a different type. For example, when you have a std::list<T, A>, the allocator A is meant to allocate objects of type T but the std::list<T, A> actually needs to allocate objects of some node type. Calling the node type _Ty, the std::list<T, A> needs to get hold of an allocator for _Ty objects which is using the allocation mechanism provided by A. Using

                  typename _A::template rebind<_Ty>::other
                  

                  指定对应的类型.现在,此声明中有一些语法上的烦恼:

                  specifies the corresponding type. Now, there are a few syntactic annoyances in this declaration:

                  1. 由于 rebind_A 的成员模板,_A 是模板参数,所以 rebind 成为一个依赖名称.要表明依赖名称是模板,它需要以template 为前缀.如果没有 template 关键字,< 将被视为小于运算符.
                  2. 名称 other 也依赖于模板参数,即它也是一个依赖名称.要指示从属名称是一种类型,需要 typename 关键字.
                  1. Since rebind is a member template of _A and _A is a template argument, the rebind becomes a dependent name. To indicate that a dependent name is a template, it needs to be prefixed by template. Without the template keyword the < would be considered to be the less-than operator.
                  2. The name other also depends on a template argument, i.e., it is also a dependent name. To indicate that a dependent name is a type, the typename keyword is needed.

                  这篇关于什么(模板)重新绑定&lt;&gt;做?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:擦除删除成语与 std::set 失败并出现与常量相关的错误 下一篇:“多集"&amp;“多地图"- 重点是什么?

                  相关文章

                    <legend id='qurKL'><style id='qurKL'><dir id='qurKL'><q id='qurKL'></q></dir></style></legend>
                  1. <small id='qurKL'></small><noframes id='qurKL'>

                  2. <i id='qurKL'><tr id='qurKL'><dt id='qurKL'><q id='qurKL'><span id='qurKL'><b id='qurKL'><form id='qurKL'><ins id='qurKL'></ins><ul id='qurKL'></ul><sub id='qurKL'></sub></form><legend id='qurKL'></legend><bdo id='qurKL'><pre id='qurKL'><center id='qurKL'></center></pre></bdo></b><th id='qurKL'></th></span></q></dt></tr></i><div id='qurKL'><tfoot id='qurKL'></tfoot><dl id='qurKL'><fieldset id='qurKL'></fieldset></dl></div>

                        <bdo id='qurKL'></bdo><ul id='qurKL'></ul>
                      <tfoot id='qurKL'></tfoot>