gpt4 book ai didi

c++ - 为什么 BOOST_FOREACH 无法处理 const boost::ptr_map?

转载 作者:可可西里 更新时间:2023-11-01 17:55:25 25 4
gpt4 key购买 nike

void main()
{
typedef boost::ptr_map<int, char> MyMap;
//typedef std::map<int, char *> MyMap; // in contrast with std type it works

MyMap mymap;

mymap[1] = new char('a');
mymap[2] = new char('b');
mymap[3] = new char('c');

BOOST_FOREACH(MyMap::value_type value, mymap)
{
std::cout << value.first << " " << value.second << std::endl;
}

MyMap const & const_mymap = mymap;

BOOST_FOREACH(const MyMap::value_type value, const_mymap)
{
std::cout << value.first << " " << value.second << std::endl;
}
}

以下错误消息来自 GCC 在第二个 BOOST_FOREACH

error: conversion from 'boost::ptr_container_detail::ref_pair<int, const char* const>' to non-scalar type 'boost::ptr_container_detail::ref_pair<int, char* const>' requested

我认为这是指针容器的 ref_pair 的弱点...

最佳答案

基于 this answer ,看来你是对的。但是有一个解决方法。将您的第二个循环更改为:

BOOST_FOREACH(MyMap::const_iterator::value_type value, const_mymap)
{
std::cout << value.first << " " << value.second << std::endl;
}

关于c++ - 为什么 BOOST_FOREACH 无法处理 const boost::ptr_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630024/

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