main 中的 C++ 数组大小

标签 c++ arrays vector

我正在学习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 动态分配。所以如果你想要 sizeCIwUIButton 指针:

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/

相关文章:

c - c中3d数组的总和值

c++ - 如何打印元组 vector ?

C++无法在 vector 中插入值

c++ - 使用 gcc 5.1 未定义 OpenCV 符号

c++ - 为什么在使用静态 constexpr 成员构造时 std::make_shared 与 new 不同?

c++ - opencv 中 findChessboardCorners() 的结果不一致

javascript - 为什么这段代码会执行无限循环?

c++ - 如何在C++中解析http请求

arrays - Swift Playground 中的 2D 数组

C++ 清除或删除 vector 的最快方法