在 C++ 中迭代可选向量

Asm*_*dar 0 c++ vector option-type

我有一个可选的向量,例如optional<std::vector<string>> vec = {"aa", "bb"};

\n

如何迭代向量?

\n

执行以下操作:

\n
for (string v : vec) {\n    cout<<v<<endl;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

给出错误:

\n
error: no matching function for call to \xe2\x80\x98begin(std::optional<std::vector<std::__cxx11::basic_string<char> > >&)\xe2\x80\x99\n     for (string v : vec) {\n                     ^~~~~~~~~~~~~~~~~~~~~~~\n
Run Code Online (Sandbox Code Playgroud)\n

如何迭代可选向量?

\n

Bil*_*nch 7

在 上使用取消引用运算符vec

for (string v : *vec) {
    cout<<v<<endl;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您的程序将通过此 if 表现出未定义的行为vec.has_value() == false。所以...首先检查一下。