"template <> int line<0>::operator[](int y) const" 是做什么的?
What does "template <> int line<0>::operator[](int y) const" do?
#include <bits/stdc++.h>
using namespace std;
constexpr int mod = 1e9 + 7, maxn = 2e6;
int N, M, p[1 << 10], buf[maxn];
template <bool t> struct line {
int *v;
int operator[](int y) const;
};
template <> int line<0>::operator[](int y) const { return v[y]; }
template <> int line<1>::operator[](int y) const { return v[M * y]; }
这个运算符是什么东西?它是一个函数吗?如果是那么为什么它后面有方括号和“const”?
还有这些模板的意思吗?我假设它执行其中之一
取决于 t 的值(真或假)'
What is this operator thing? Is it a function? If it is then why does it have square brackets
您将 operator[]
声明为名为 line
的 class 模板的成员函数。通过提供这个,我们说我们 重载 operator[]
我们的 class 模板 line
(实际上是针对特定的 class 类型将被实例化)。
why does it have const
after it
const
表示这个operator[]
成员函数是一个const成员函数。这意味着我们不允许更改此成员函数内的 non-static non-mutable 数据成员。
Also do these template things mean?
假设您正在询问 template<>
正如问题标题所暗示的那样,这意味着您正在 明确(完全)专门化 成员函数 operator[]
对于不同的 class-template 个参数 0
和 1
.
可以在任何 good C++ books.
中找到更多详细信息
#include <bits/stdc++.h>
using namespace std;
constexpr int mod = 1e9 + 7, maxn = 2e6;
int N, M, p[1 << 10], buf[maxn];
template <bool t> struct line {
int *v;
int operator[](int y) const;
};
template <> int line<0>::operator[](int y) const { return v[y]; }
template <> int line<1>::operator[](int y) const { return v[M * y]; }
这个运算符是什么东西?它是一个函数吗?如果是那么为什么它后面有方括号和“const”? 还有这些模板的意思吗?我假设它执行其中之一 取决于 t 的值(真或假)'
What is this operator thing? Is it a function? If it is then why does it have square brackets
您将 operator[]
声明为名为 line
的 class 模板的成员函数。通过提供这个,我们说我们 重载 operator[]
我们的 class 模板 line
(实际上是针对特定的 class 类型将被实例化)。
why does it have
const
after it
const
表示这个operator[]
成员函数是一个const成员函数。这意味着我们不允许更改此成员函数内的 non-static non-mutable 数据成员。
Also do these template things mean?
假设您正在询问 template<>
正如问题标题所暗示的那样,这意味着您正在 明确(完全)专门化 成员函数 operator[]
对于不同的 class-template 个参数 0
和 1
.
可以在任何 good C++ books.
中找到更多详细信息