c ++有趣的函数定义

时间:2010-10-16 18:39:27

标签: c++ function

我检查过RDcode的代码。我遇到了一个定义的函数,我不明白。你能帮我解决一下这段代码吗?

template <typename T>
   class argless {
   public:
     argless(const T& c) : container(c) {}; // i dont understant this line.
     bool operator() (unsigned int v1,unsigned int v2){
       return container[v1]<container[v2];
     }
     const T &container;
   };

6 个答案:

答案 0 :(得分:8)

它是一个构造函数,它引用const T,并用它初始化成员变量container

答案 1 :(得分:3)

它使用初始化程序语法将const引用传入的容器存储在成员变量容器中。它必须使用初始化器语法,因为容器成员变量是一个引用(它必须通过初始化列表初始化)。

答案 2 :(得分:3)

这是使用constructorinitializer list

答案 3 :(得分:0)

这是一个仿函数的类模板,允许比较可索引容器中的任意元素,即。一个实现memberOfT& operator[] (unsigned int)的人。

此外,memberOfT必须支持bool operator<(const memberOfT&, const memberOfT&),否则使其成为仿函数的operator()将无法编译。

您询问的行只是使类T的输入容器可供该类的其他成员使用。由于这是作为参考保存在argless中,因此argless的构造函数上使用的源容器在argless的使用期限内保持在范围内非常重要。

答案 4 :(得分:0)

这是两种类型的语法:

1)初始化一个const变量。

2)调用构造函数的基类。

答案 5 :(得分:0)

它用于使operator()像operator&lt;对于另一个容器的组件。您可以使用它根据另一个容器的内容对一个容器进行排序,其中第一个包含第二个容器的索引。在这种情况下,您将获得有关排序容器的外观的知识,而无需实际排序 - 如果移动元素是昂贵或不可能的,例如字符串,这将是一件有用的事情。