引用/非可空指针的容器

Gre*_*eek 7 c++ type-systems pointers reference

当我想要NULL不可能时,我通常使用引用而不是指针.既然我们不能有引用容器,那么只包含非空指针的容器类型应该是什么?

Lig*_*ica 10

如果你要使用一个指针容器,你只需要使用一个指针容器,不要在其中放置任何NULL指针,然后继续前进.

但是,如果使用,您仍然可以拥有一个引用容器std::reference_wrapper.例如:

#include <vector>
#include <iostream>
#include <functional>

int main()
{
    int x = 5;

    std::vector<std::reference_wrapper<int>> v;
    v.push_back(std::reference_wrapper<int>(x));

    x = 6;

    std::cout << v[0];  // 6
}
Run Code Online (Sandbox Code Playgroud)

现场演示

  • `std :: reference_wrapper`应位于第一行,指针应位于第二行. (5认同)
  • @GManNickG:是的,它混淆了对象的生命周期.您几乎总是希望使用动态分配,并且存储_references_而不是指向动态分配对象的指针是非常规的并且令人困惑. (2认同)