Re: How to use string constants with std::map
Hi Stephan, thank you for the quick answer. Generating the longer u"cd4"_ustr for example is no problem in XSLT. So I will likely go with that. The hint about "not constexpr-ready" is helpful too. I have indeed thought about whether to use it. Kind regards, Regina Stephan Bergmann schrieb am 11.10.2023 um 20:14: On 10/11/23 19:24, Regina Henschel wrote: How to write the map? In the past it would have been something like the following: static const std::map> aConnectionSiteAngleMap{ {"accentBorderCallout1",{"0","cd4","cd2","3cd4"}}, ... {"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}} }; All strings are constants and neither the map nor the strings will ever change. How do I have to write it now? You can keep writing it as above, or your could write it as static const std::map> aConnectionSiteAngleMap{ {u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, ... {u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} }; which is a bit more efficient as it doesn't need to construct the OUString instances it runtime (but it still needs to construct the std::vector and std::map instances at runtime). (You can't write it as static constexpr std::map> aConnectionSiteAngleMap{ {u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, ... {u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} }; as std::map is not constexpr-ready in C++20, and neither is std::vector in some standard library implementations, like in debug-mode libstdc++.)
Re: How to use string constants with std::map
On 10/11/23 19:24, Regina Henschel wrote: How to write the map? In the past it would have been something like the following: static const std::map> aConnectionSiteAngleMap{ {"accentBorderCallout1",{"0","cd4","cd2","3cd4"}}, ... {"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}} }; All strings are constants and neither the map nor the strings will ever change. How do I have to write it now? You can keep writing it as above, or your could write it as static const std::map> aConnectionSiteAngleMap{ {u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, ... {u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} }; which is a bit more efficient as it doesn't need to construct the OUString instances it runtime (but it still needs to construct the std::vector and std::map instances at runtime). (You can't write it as static constexpr std::map> aConnectionSiteAngleMap{ {u"accentBorderCallout1"_ustr,{u"0"_ustr,u"cd4"_ustr,u"cd2"_ustr,u"3cd4"_ustr}}, ... {u"wedgeRoundRectCallout"_ustr,{u"3cd4"_ustr,u"cd2"_ustr,u"cd4"_ustr,u"0"_ustr,u"cd4"_ustr}} }; as std::map is not constexpr-ready in C++20, and neither is std::vector in some standard library implementations, like in debug-mode libstdc++.)
How to use string constants with std::map
Hi all, For import from OOXML, I need a map which has the shape preset type string as key and a vector of the angle strings of the cxn elements of that shape as value. I will extract this information from presetShapeDefinitions.xml file using XSLT. The map has total 187 rows. How to write the map? In the past it would have been something like the following: static const std::map> aConnectionSiteAngleMap{ {"accentBorderCallout1",{"0","cd4","cd2","3cd4"}}, ... {"wedgeRoundRectCallout",{"3cd4","cd2","cd4","0","cd4"}} }; All strings are constants and neither the map nor the strings will ever change. How do I have to write it now? Kind regards, Regina