我正在学习c++,我有这些疑惑:
我想在运行时初始化数组,但数组的大小也需要在运行时读取。
int size;
int main(){
//read size
size = <value read above>;
CIwUIButton* buttons[size];
}
这不能编译并且说 size
必须是常量。我来自 Java 背景,我可以通过遵循相同的逻辑实现相同的功能。如何在 c++ 中实现。
我正在使用 vector 作为 Java ArrayList 的等价物。我想在 main 外部引用 vector 但想在 main 内部初始化它。同样,将从用户输入中读取 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);
}
最佳答案
是的,所以 C++ 不是 Java,Java 也不是 C++。它们都是不同的语言。
如果您有未知数量的“东西”,您需要使用vector
或使用new
动态分配。所以如果你想要 size
个 CIwUIButton
指针:
CIwUIButton** buttons = new CIwUIButton*[size];
(确保您稍后使用 delete [] buttons
- 在删除每个按钮之后)。
如果你想要 size
个按钮:
CIwUIButton* buttons = new CIwUIButton[size];
同样,使用与上面相同的方法删除
按钮,但您不需要删除按钮本身)
您还可以将 vector
用于 CIwUIButton
。
如果你想在一个名为 elements
的全局 vector 中包含整数的大小,那么:
elements.resize(size);
(几乎没有任何情况需要为 vector
对象调用 new
- 这可能是错误的,除非您确切地知道为什么要这样做)
关于main 中的 C++ 数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895392/