Alinshans/MyTinySTL

vector 初始化方式疑问

HamsterCoderSim opened this issue · 2 comments

通过 initializer_list 初始化的时候,为什么不把参数分为 const std::initializer_list<value_type> &iliststd::initializer_list<value_type> &&ilist 两种拷贝构造参数呢?

而是使用下面的这种方式,这是有什么顾虑吗

 vector(std::initializer_list<value_type> ilist)
  {
    range_init(ilist.begin(), ilist.end());
  }

通过 initializer_list 初始化的时候,为什么不把参数分为 const std::initializer_list<value_type> &iliststd::initializer_list<value_type> &&ilist 两种拷贝构造参数呢?

这没有意义。 initializer_list 是一个引用性质的东西,它只是引用而非复制底层数组。对这种东西最好是传值。 C++ 标准库中还有类似的 basic_string_viewspan

@frederick-vs-ja 好的,明白了,多谢