【发布时间】:2019-08-07 05:23:04
【问题描述】:
我正在尝试自学一些 C++17。
为什么编译器会为下面的代码 sn-p 抛出错误?
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<int> v = { 3, 1, 4 };
std::cout << std::size(v) << '\n';
int a[] = { -5, 10, 15 };
std::cout << std::size(a) << '\n';
}
编译器抛出以下错误
manish@Manish-Tummala:~/c_files$ g++ 6.cpp -o - 6.out
6.cpp: In function ‘int main()’:
6.cpp:8:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(v) << '\n';
^~~~
6.cpp:8:23: note: suggested alternative: ‘size_t’
std::cout << std::size(v) << '\n';
^~~~
size_t
6.cpp:11:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(a) << '\n';
^~~~
6.cpp:11:23: note: suggested alternative: ‘size_t’
std::cout << std::size(a) << '\n';
^~~~
size_t
【问题讨论】:
-
您需要
-std=c++17标志来告诉编译器使用 C++17。否则,你可以做a.size() -
@Mirko
a.size()不起作用,因为a是一个原始的int[]数组。std::array<int, 3>必须被使用 -
@RemyLebeau 真实数据。他仍然可以做到
v.size()和sizeof(a)/sizeof(a[0])
标签: c++ gcc g++ standard-library