-2

我在下面有这段代码我无法理解我从我正在使用的教程中复制的内容 -

#include <initializer_list>
#include <iostream>
#include <list>
#include <vector>

template <typename T, template <typename, typename> class Cont = std::vector>
class Matrix{
public:
  explicit Matrix(std::initializer_list<T> inList): data(inList){
    for (auto d: data) std::cout << d << " ";
  }
  int getSize() const{
    return data.size();
  }

private:
  Cont<T, std::allocator<T>> data;

};

int main(){

  std::cout << std::endl;

  Matrix<int> myIntVec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  std::cout << std::endl;
  std::cout << "myIntVec.getSize(): " << myIntVec.getSize() << std::endl;

  std::cout << std::endl;

  Matrix<double> myDoubleVec{1.1, 2.2, 3.3, 4.4, 5.5};
  std::cout << std::endl;
  std::cout << "myDoubleVec.getSize(): "  << myDoubleVec.getSize() << std::endl;

  std::cout << std::endl;

  Matrix<std::string,std::list> myStringList{"one", "two", "three", "four"};
  std::cout << std::endl;
  std::cout << "myStringList.getSize(): " << myStringList.getSize() << std::endl;

  std::cout << std::endl;
}

要初始化 myIntVec 我需要指定 int 为什么不能从参数推断为 Int 因为模板定义为 -

模板 <typename T, template <typename, typename> 类 Cont = std::vector > ?

和 Cont = Cont<T, std::allocator> 数据;

所以它可以从构造函数的参数中获取 T is int 那么为什么它也不能定义数据,因为它使用相同的 T 参数?

另外,为什么只需要在 - 中指定 int

Matrix<int> myIntVec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
4

0 回答 0