我正在学习c ++,我有这些疑惑:
我想在运行时初始化数组,但是还需要在运行时读取数组的大小.
int size;
int main(){
//read size
size = <value read above>;
CIwUIButton* buttons[size];
}
Run Code Online (Sandbox Code Playgroud)
这不会编译,并且说size
必须是常量.我来自Java背景,我可以通过遵循相同的逻辑来实现相同的功能.如何在c ++中完成.
我使用向量作为Java ArrayList的等价物.我想在main之外引用向量但是想在main.Again中初始化它将从用户输入中读取max_size并且所有元素应该初始化为0;
vector<int> elements;
int main(){
//read size
int size = <value read above>;
//how to do following in c++
elements = new vector<int>(size);
}
Run Code Online (Sandbox Code Playgroud)
是的,所以C++不是Java,而Java不是C++.它们都是不同的语言.
如果你有一些未知数量的"东西",你需要使用a vector
或动态分配使用new
.所以如果你想要size
多少CIwUIButton
指针:
CIwUIButton** buttons = new CIwUIButton*[size];
Run Code Online (Sandbox Code Playgroud)
(确保delete [] buttons
稍后使用- 删除每个按钮后).
如果你想要size
多个按钮:
CIwUIButton* buttons = new CIwUIButton[size];
Run Code Online (Sandbox Code Playgroud)
再次,使用与上面相同delete
的按钮,但您不需要删除按钮本身)
您也可以使用vector
了CIwUIButton
.
如果你想要一个全局向量中的整数大小,elements
那么:
elements.resize(size);
Run Code Online (Sandbox Code Playgroud)
(几乎没有你需要召唤new
一个vector
物体的情况 - 这可能是错的,除非你确切知道你为什么要这样做)