主要的C++数组大小

vis*_*esh 1 c++ arrays vector

我正在学习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)

Mat*_*son 6

是的,所以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的按钮,但您不需要删除按钮本身)

您也可以使用vectorCIwUIButton.

如果你想要一个全局向量中的整数大小,elements那么:

elements.resize(size);
Run Code Online (Sandbox Code Playgroud)

(几乎没有你需要召唤new一个vector物体的情况 - 这可能是错的,除非你确切知道你为什么要这样做)

  • 不幸的是,写一个"长"的答案也在竞争中失去了"第一个答案"...... :( (2认同)