处理c ++模板中的字符串

时间:2014-03-26 02:39:49

标签: c++ templates

作为一些初学者c ++模板练习的一部分,我试图在c ++中编写一个模板作为std :: vector的包装器,并且我遇到了障碍。

假设我将要使用的变量类型是int,double和string。

我试图写一个循环来填充向量:

type element;

while (element != 0){
  std::cout << "Enter an element, use 0 to exit: ";
  std::cin >> element;

  if(element != 0)
    items.push_back(element);
}

问题是,虽然这适用于int&amp; double,它不能与std :: string一起使用,因为string不支持!=。我也可以看到自己在计算向量中的最大值/小值时遇到问题。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

你可以提供一个可选的模板参数,它是一个比较器(我认为标准的lib经常这样做)。不那么野心勃勃,您可以使用类型{}来比较哪个应该适用于任何具有默认ctor的任何内容:if(element != type{})。 (你的问题不是字符串没有比较运算符,而是没有定义运算符来与int进行比较)。