我不清楚通过引用将int的可选向量传递给函数的正确代码是否是:
void test_func(std::optional<std::vector<int>>& vec)
或
{{1}}
非常感谢任何帮助。
答案 0 :(得分:4)
非所有者指针是可为空的引用类型。
String output = "red 5green 5blue 10white 15"
int sum = 0
for (String token : output.replaceAll(/\D+/, " ").trim().split(/\s+/)) {
sum += Integer.parseInt(token)
}
println(sum)
答案 1 :(得分:3)
可选的参考文献是not part of the standard library at the moment。
从原则上来说,这都是有道理的。
void test_func(std::optional<std::vector<int>&> vec)
此处std::optional
按值传递(复制),其中的引用也按值传递。复制参考意味着它仍然指向旧对象。这可能会产生意外的行为,因为有std::optional
的两个实例指向同一个std::vector
。
void test_func(std::optional<std::vector<int>>& vec)
此处std::optional
通过引用传递。您正在访问已传递的同一可选内容,因此不会进行复制。
第二是一种更直观的恕我直言,目前可在STL中使用,因此可取。
答案 2 :(得分:1)
据我所知,在标准中这是不可能的,因为人们尚未就一项作业的效果达成共识。
您希望通过库功能实现以下目标:
void test_func(std::optional<std::reference_wrapper<std::vector<int>>> vec)