首页 文章

使用std :: optional将std :: vector <int>传递给函数

提问于
浏览
3

我不清楚是否通过引用将一个可选的int向量传递给函数的正确代码是:

void test_func(std::optional<std::vector<int>&> vec)

要么

void test_func(std::optional<std::vector<int>>& vec)

任何帮助非常感谢 .

3 回答

  • 4

    据我所知,这在标准中是不可能的,因为一个人没有就任务的影响达成一致 .

    使用库功能可以实现您想要实现的目标:

    void test_func(std::optional<std::reference_wrapper<std::vector<int>>> vec)
    
  • 1

    引用的可选项是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 通过引用传递 . 您正在访问传递的相同选项,不会进行复制 .

    second 一个是更直观的imho,目前在STL中可用,所以它是 preferable .

  • 3

    非拥有指针是可以为空的引用类型 .

    void test_func(std::vector<int>* vec)
    

相关问题