gpt4 book ai didi

c++ - 关于如何使用 C++ 引用的困惑

转载 作者:行者123 更新时间:2023-11-30 02:43:01 26 4
gpt4 key购买 nike

我是 C++ 的新手,我对 C++ 引用感到困惑,例如 std::map::insert引用,一开始,它有:

pair<iterator,bool> insert (const value_type& val);
template <class P> pair<iterator,bool> insert (P&& val);
iterator insert (const_iterator position, const value_type& val);
template <class P> iterator insert (const_iterator position, P&& val);
template <class InputIterator>
void insert (InputIterator first, InputIterator last);
void insert (initializer_list<value_type> il);

在后面的例子中,它使用这样的插入:

mymap.insert ( std::pair<char,int>('z',200) );

从引用的哪一行可以知道我可以像上面那样使用insert函数?

最佳答案

假设您有一个 std::map<char,int> , 线

mymap.insert ( std::pair<char,int>('z',200) );

是允许的,因为 map 定义了单元素构造函数

single element (1)  
pair<iterator,bool> insert (const value_type& val);
template <class P> pair<iterator,bool> insert (P&& val);

如果您使用的是 C++11,则应启动第二个。在 C++03 中只有第一个可用。

文档说

Member type value_type is the type of the elements in the container, defined in map as 
pair<const key_type,mapped_type>

因此std::pair<char,int>value_type你的映射和插入是有效的(临时可以绑定(bind)到 C++11 中的左值常量引用或右值引用)。

我不建议也看一下 cppreference因为如果您在使用 cplusplus.com 时遇到问题,它可能更难理解,但通常我会推荐它。

关于c++ - 关于如何使用 C++ 引用的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26546966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com