gpt4 book ai didi

c++ - Const 映射及其大小

转载 作者:行者123 更新时间:2023-12-01 15:12:51 24 4
gpt4 key购买 nike

我有一个 std::map ,它无法在运行时更改。因此,我已将其标记为 const,但我无法将其标记为 constexpr,因为它是非文字类型。

我可以在编译时推断出该映射的大小吗?

#include <map>
#include<string>

int main (){
const std::map <int, std::string> my_map {
{ 42, "foo" },
{ 3, "bar" }
};

constexpr auto items = my_map.size();
return items;
}

This无法编译并出现错误:

:10:20: error: constexpr variable 'items' must be initialized by a constant expression

constexpr auto items = my_map.size();

^ ~~~~~~~~~~~~~

:10:35: note: non-constexpr function 'size' cannot be used in a constant expression

constexpr auto items = my_map.size();

最佳答案

不幸的是,您不能在 constexpt 上下文中使用 std::map 和 std::string。如果可能的话,考虑切换到 array 和 string_view:

int main() {
constexpr std::array my_map{
std::pair<int, std::string_view>{ 42, "foo" },
std::pair<int, std::string_view>{ 3, "bar" }
};
constexpr auto items = my_map.size();
return items;
}

然后使用 constexpr std 算法

关于c++ - Const 映射及其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262308/

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