gpt4 book ai didi

c++ - boost::my_map_list_of

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:28 24 4
gpt4 key购买 nike

我在理解 boost::my_map_list_of 函数时遇到一些问题。特别是这部分:

operator Map const&() const { return data; }

谁能解释一下它是如何工作的?并且这种方式创建的map是否在编译时进行了初始化?

下面是整个 boost:my_map_list_of() 代码:

template<class K, class V>
struct map_list_of_type {
typedef std::map<K, V> Map;
Map data;
map_list_of_type(K k, V v) { data[k] = v; }
map_list_of_type& operator()(K k, V v) { data[k] = v; return *this; }
operator Map const&() const { return data; }
};
template<class K, class V>
map_list_of_type<K, V> my_map_list_of(K k, V v) {
return map_list_of_type<K, V>(k, v);
}

int main() {
std::map<int, char> example =
my_map_list_of(1, 'a') (2, 'b') (3, 'c');
cout << example << '\n';
}

最佳答案

main()中的代码正在调用函数 my_map_list_of() ,它返回一个 map_list_of_type对象:

my_map_list_of(1, 'a')

然后,map_list_of_type::operator()在返回的对象上调用。该函数返回相同的对象。

my_map_list_of(1, 'a') (2, 'b');
^^^^^^^^

map_list_of_type::operator()在新返回的对象上再次调用。

my_map_list_of(1, 'a') (2, 'b') (3, 'c');
^^^^^^^^

然后,map_list_of_type::operator Map const&()被隐式调用,因为此分配需要它。对象 map_list_of_type<int,char>转换为 std::map<int,char>

std::map<int, char> example = my_map_list_of(1, 'a') (2, 'b') (3, 'c');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

关于c++ - boost::my_map_list_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791753/

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