C++ 和类型 size_type

Bob*_*Bob 1 c++ stl visual-studio

以下代码片段无法编译:

#include <vector>
#include <string.h>
#include <cstddef.h>
#include <stddef.h>

using namespace std;
vector<int> list1{1,3,5,7,11};
size_type s1 = list1.size();
Run Code Online (Sandbox Code Playgroud)

我正在使用 Microsoft Visual Stdio,但我不希望它依赖于编译器。我相信问题是我未能包含正确的标头。我应该包含什么标题?

鲍勃

Nat*_*ica 5

size_type是您正在使用的容器的从属名称。你需要

std::vector<int>::size_type
Run Code Online (Sandbox Code Playgroud)

您可以使用std::size_t,因为这size_type通常归结为但std::vector<int>::size_type保证是正确的。

如果您使用的是 C++11 或更高版本,那么您可以忘记这个细节,只需使用

auto s1 = list1.size();
Run Code Online (Sandbox Code Playgroud)

编译器将推导出正确的类型,如果您更改了容器类型,则确实需要更改此行。

  • 或者,当然,“auto s1 = list1.size();”(如果您使用的是 C++11) (2认同)