首页 > 解决方案 > 当我使用 size(vec) 而不是 vec.size() 来查找向量的大小时出现错误。如何解决这个问题?

问题描述

正在生成的错误如下。

error: 'size' was not declared in this scope

当我使用 nums.size() 时,它工作正常。这可能是因为使用了较旧的编译器版本,但在我的系统中,当我检查版本时,它显示 10.3.0,我认为这是最新版本。我该如何解决?

标签: c++vector

解决方案


std::size功能是在 C++17 中添加的,因此,您需要启用它的支持。使用 GCC,只需将-std=c++17命令行参数添加到您的g++调用中。

您还可以查看 libstdc++ 源代码:https ://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/range_access.h#L236 。如您所见,#ifdef只有std::size在应用 C++17(或更高标准)支持时才可用。


推荐阅读