关于`std :: vector :: push_back`的小数的选择

约翰

有两个声明的std::vector::push_back理解。我rvaluelvalue在一定程度上。据我所知,几乎所有type(T&、T&&、T)都可以转换为const T&,那么当将不同类型的对象传递给时,编译器会选择哪种类型std::vector::push

我是C ++的新手,尽管我反复考虑了一下,但还是不明白这个想法。如果您能给我一些简单的例子来弄清楚,那就更好了。对于这个问题的帮助,我将不胜感激。

根据文档(http://www.cplusplus.com/reference/vector/vector/push_back/),它表示:

void push_back(const value_type&val);

void push_back(value_type && val);

在向量的最后一个元素之后的向量的末尾添加一个新元素。val的内容被复制(或移动)到新元素。

丹尼尔·兰格

左值不能绑定到右值引用,这意味着,当您std::vector<T>::push_back使用左值参数调用时,唯一可行的重载是带有const T&参数的重载

右值可以绑定到右值引用和常量左值引用。因此,两个重载均适用但是根据C ++重载规则,T&&将选择带有rvalue参考参数的重载


您可以轻松地自己尝试以下操作:

void f(const int&) { std::cout << "L"; }
void f(int&&) { std::cout << "R"; }

int main() 
{
   int i = 0;
   f(i);  // prints "L"
   f(0);  // prints "R"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: vector :: push_back的成本是成功还是无效?

来自分类Dev

MSVC中std :: vector :: push_back的实现

来自分类Dev

std :: vector函数push_back中的奇怪段错误

来自分类Dev

push_back期间std :: vector分段错误

来自分类Dev

std :: vector中push_back函数的奇怪语法

来自分类Dev

线程安全性std :: vector push_back并保留

来自分类Dev

MSVC中std :: vector :: push_back的实现

来自分类Dev

OpenCV点的std :: vector,没有push_back方法

来自分类Dev

std::vector<>::push_back 导致 Arduino 链接错误

来自分类Dev

想要简化我的 std::vector push_back 用法

来自分类Dev

std :: vector <std :: vector <int >> push_back导致堆缓冲区溢出

来自分类Dev

调用std :: vector :: push_back()会更改vector中的先前元素吗?

来自分类Dev

调用std :: vector :: push_back()会更改vector中的先前元素吗?

来自分类Dev

在std :: vector push_back()和std :: map运算符中使用&&作为参数[]

来自分类Dev

使用push_back时,std :: unique_ptr是否已移入std :: vector?

来自分类Dev

std :: vector <std :: unique_ptr <>> :: push_back()的正确语法是什么?

来自分类Dev

std vector push_back':2个重载没有针对“ this”指针错误的合法转换

来自分类Dev

当push_back新元素添加到std :: vector时,C ++参考更改

来自分类Dev

为什么std :: vector :: push_back需要赋值运算符

来自分类Dev

C ++ std :: vector可以同时处理来自多线程的push_back吗?

来自分类Dev

AddressSanitizer将std :: vector <T> :: push_back标识为释放后使用堆错误的原因

来自分类Dev

将指针数组推入std :: vector中,避免使用push_back复制对象

来自分类Dev

std :: vector的push_back()导致奇怪的编译时错误消息

来自分类Dev

C ++ std :: vector可以同时处理来自多线程的push_back吗?

来自分类Dev

为什么使用虚拟析构函数进行std :: vector :: push_back segfaults?

来自分类Dev

OpenMP 并行区域中的 std::vector push_back 会导致错误共享吗?

来自分类Dev

使用memcpy的Vector的push_back实现

来自分类Dev

为什么要在std :: vector :: push_back(T object)方法中构造对象时调用析构函数?

来自分类Dev

std :: vector.push_back()C ++

Related 相关文章

  1. 1

    std :: vector :: push_back的成本是成功还是无效?

  2. 2

    MSVC中std :: vector :: push_back的实现

  3. 3

    std :: vector函数push_back中的奇怪段错误

  4. 4

    push_back期间std :: vector分段错误

  5. 5

    std :: vector中push_back函数的奇怪语法

  6. 6

    线程安全性std :: vector push_back并保留

  7. 7

    MSVC中std :: vector :: push_back的实现

  8. 8

    OpenCV点的std :: vector,没有push_back方法

  9. 9

    std::vector<>::push_back 导致 Arduino 链接错误

  10. 10

    想要简化我的 std::vector push_back 用法

  11. 11

    std :: vector <std :: vector <int >> push_back导致堆缓冲区溢出

  12. 12

    调用std :: vector :: push_back()会更改vector中的先前元素吗?

  13. 13

    调用std :: vector :: push_back()会更改vector中的先前元素吗?

  14. 14

    在std :: vector push_back()和std :: map运算符中使用&&作为参数[]

  15. 15

    使用push_back时,std :: unique_ptr是否已移入std :: vector?

  16. 16

    std :: vector <std :: unique_ptr <>> :: push_back()的正确语法是什么?

  17. 17

    std vector push_back':2个重载没有针对“ this”指针错误的合法转换

  18. 18

    当push_back新元素添加到std :: vector时,C ++参考更改

  19. 19

    为什么std :: vector :: push_back需要赋值运算符

  20. 20

    C ++ std :: vector可以同时处理来自多线程的push_back吗?

  21. 21

    AddressSanitizer将std :: vector <T> :: push_back标识为释放后使用堆错误的原因

  22. 22

    将指针数组推入std :: vector中,避免使用push_back复制对象

  23. 23

    std :: vector的push_back()导致奇怪的编译时错误消息

  24. 24

    C ++ std :: vector可以同时处理来自多线程的push_back吗?

  25. 25

    为什么使用虚拟析构函数进行std :: vector :: push_back segfaults?

  26. 26

    OpenMP 并行区域中的 std::vector push_back 会导致错误共享吗?

  27. 27

    使用memcpy的Vector的push_back实现

  28. 28

    为什么要在std :: vector :: push_back(T object)方法中构造对象时调用析构函数?

  29. 29

    std :: vector.push_back()C ++

热门标签

归档