首页 > 解决方案 > C ++中奇怪的命名空间概念

问题描述

我遇到了这个:

template<class T> using PQ = priority_queue<T>;

我无法理解发生了什么,所以我尝试访问源代码并自己复制它:

template<class T> class I_Love_You {
    public:
    static void print() {
        cout << "Hello StackOverflow!" << endl;
    }
};

template<class F> using We_are_just_friends = I_Love_You<F>;

void solve() {
    We_are_just_friends<int>::print();
}

这里发生了什么?priority_queue 是在 c++ 文件中定义的模板类定义,然后在创建 .exe 时在 c++ 中链接。但是,这是什么使用和模板,以及我如何分配模板以及通过使用创建或定义命名空间的具体情况?请有人帮我分解一下。

标签: c++templatesnamespaces

解决方案


template<class T> using PQ = priority_queue<T>;

priority_queue是一个模板类型,所以我们总是要为它指定一个类型。

如果我们为它创建一个别名,PQ,priority_queue仍然需要知道它的类型。因此,我们声明PQ了一个模板,并将传递给的值传递PQpriority_queue


推荐阅读