You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何为vector指针添加两类const约束?

解答

C++的const修饰规则对所有类型(包括基础类型、STL容器等自定义类型)完全统一:const默认修饰其左侧的语法元素,若左侧无元素则修饰右侧元素,不存在针对vector的特殊规则,你可以把vector<int>整体当成和int一样的普通类型来推导写法。


1. 约束指针本身为const(不可修改指向)

要修饰指针本身,需要把const放在*的右侧,声明写法如下:

void my_func (vector<int>* const arr)
  • 禁止操作:arr = &other_vec 这类修改指针指向的语句会编译报错
  • 允许操作:通过指针修改vector内部元素是合法的,例如(*arr)[0] = 10不会报错

2. 约束vector元素为const(不可修改内部内容)

要修饰指针指向的vector对象本身,需要把const放在*的左侧,以下两种写法完全等价:

// 写法1(更常用)
void my_func (const vector<int>* arr)
// 写法2
void my_func (vector<int> const * arr)
  • 禁止操作:修改vector内部元素的语句会编译报错,例如(*arr)[0] = 10、arr->push_back(20)均不合法
  • 允许操作:修改指针本身的指向是合法的,例如arr = &other_vec不会报错

额外扩展:同时满足两种约束

如果既不允许修改指针指向,也不允许修改vector内部元素,可以组合两种写法:

void my_func (const vector<int>* const arr)

内容的提问来源于stack exchange,提问作者Algo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:15:09