相关疑难解决方法(0)

为什么C++ STL不提供任何"树"容器?

为什么C++ STL不提供任何"树"容器,而最好使用什么?

我想将对象的层次结构存储为树,而不是使用树作为性能增强...

c++ tree stl

362
推荐指数
13
解决办法
19万
查看次数

哪些存储不完整类型的STL数据结构可以用作类成员?

据我所知,从 C++17 开始,某些 STL 数据结构可能“存在”,并且以不完整的类型作为描述存储类型的模板参数。例如,如果类的所有属性(需要的定义)都在单独的 .cpp 文件中实现,我可以使用std::unique_ptr<Incomplete>(虽然我不确定它是否是数据结构)或作为类成员:std::vector<Incomplete>Incomplete

class Incomplete;
using Complete = int;
class Foo {
private:
  std::unique_ptr<Incomplete> u_p;
  std::vector<Incomplete> v;
  std::deque<Incomplete> d;
  std::list<Incomplete> l;
  std::set<Incomplete> s;
  std::unordered_map<Complete, Complete> u_m_cc;
  std::unordered_map<Complete, Incomplete> u_m_ci;
  std::unordered_map<Incomplete, Complete> u_m_ic;
  std::unordered_map<Incomplete, Incomplete> u_m_ii;
public:
  // implemented in a separate .cpp which has Incomplete defined:
  Foo();
  Foo(Foo&&);
  Foo& operator=(Foo&&);
  Foo(Foo const&);
  Foo& operator=(Foo const&);
  ~Foo();
};
Run Code Online (Sandbox Code Playgroud)

那么,上面列出的哪些数据成员对于这种用法是有效的呢?其他数据结构、智能指针等呢?

c++ standards stl forward-declaration c++17

4
推荐指数
1
解决办法
587
查看次数

标签 统计

c++ ×2

stl ×2

c++17 ×1

forward-declaration ×1

standards ×1

tree ×1