const
const 是什么
const (全称 constant 还是什么别的), 声明时的修饰符, 主要说明 变量在初始化后不能再次修改.
const 的用法
const /*变量名*/ = /*值*/;
注意:
在声明指针变量时, const
有两个修饰的位置:
- 在声明指针之前
const int* all = new int;
- 在声明指针中
int* const all = new int;
这两种声明的差别在于:
- 说明这个指针的值不会改变;
- 说明这个指针的指向地址不会改变.
当然, 这两种可以同时用.
举例
题目: 抽奖2
std::vector<std::vector<int>> search(int* const all, bool* const visit, const int& k, const int& size = 9, std::vector<int> pushed = { })
{
// 具体实现
}
在这里, 我就用第二种说明了 all
指针和 visit
指针的指向地址不变.
这个例子还包含了 默认参数 和 引用, 初始化列表(C++11及以上) 的语法, 以后应该会有帖子
题外话
不知道为什么老师说我的代码:
根本不是给人看的…
例题的源代码:
#include <iostream>
#include <set>
#include <vector>
std::vector<std::vector<int>> search(int* const all, bool* const visit, const int& k, const int& size = 9, std::vector<int> pushed = { })
{
static std::vector<std::vector<int>> total;
if (k <= 0)
{
total.push_back(pushed);
return { pushed };
}
for (int a = 0; a < size; a++)
{
if (visit[a])
{
continue;
}
visit[a] = true;
pushed.push_back(all[a]);
search(all, visit, k - 1, 9, pushed);
pushed.pop_back();
visit[a] = false;
}
return total;
}
int main()
{
int n;
std::cin >> n;
int* all = new int[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
bool* visit = new bool[9] { false };
for (std::vector<int> x : search(all, visit, n, 9))
{
for (int y : x)
{
std::cout << y << ' ';
}
std::cout << std::endl;
}
}
相信你们能理解 (天知道我包含 <set>
干嘛)