C++ new申请二维数组能否使用非常量入参
前提:需要一个二位数组,非常量输入作为数组下标。知道可以用Vector实现,但是因为最近工作原因都是用的C语言开发,C++一些特性忘记了。
请教下C++ 除了用For循环,与兼容C的malloc,是否可以用C++的new实现下面内容。
string s;
cin >> s;
int slength = s.length();
bool (*dp)[slength] = (bool(*)[slength])malloc(sizeof(bool) * slength * slength);
直接使用下面代码报错:
bool (*dp)[slength] = new bool[slength][slength];
报错信息:
.\main.cpp: In member function 'std::__cxx11::string Solution::longestPalindrome(std::__cxx11::string)':
.\main.cpp:174:56: error: array size in new-expression must be constant
bool (*dp)[slength] = new bool[slength][slength];
^
.\main.cpp:174:56: error: the value of 'slength' is not usable in a constant expression
.\main.cpp:167:13: note: 'int slength' is not const
int slength = s.length();
^~~~~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个是不行的,这里第二维(下标)必须是确定的才行。
https://stackoverflow.com/que...
给你一个例子,虽然比较麻烦,是能实现你想要的效果的。