c++ - 简单的 C++ 数组赋值

标签 c++ c++11

很抱歉这个问题,我一直在做 Python 和 JS,现在回到 C++ 来分配一个数组。

如何才能比这更容易:

float* d1 = (float*)calloc(4,sizeof(float));
d1[0] = 1;
d1[1] = 2;
d1[2] = 3;
d1[3] = 4;

我习惯了 d1 = [1,2,3,4] 并且无法理解它......

最佳答案

我看到以下用于创建 float 数组的选项。

选项 1

使用常规数组。

float d1[] = {1.0f, 2.0f, 3.0f, 4.0f};

float d1[4] = {1.0f, 2.0f, 3.0f, 4.0f};

选项 2

使用std::array

std::array<float, 4> d1{1.0f, 2.0f, 3.0f, 4.0f}

选项 3

使用std::vector

std::vector<float> d1{1.0f, 2.0f, 3.0f, 4.0f}

除非有充分的理由,否则更喜欢使用 std::arraystd::vectorstd::array 如果您在编译时知道数组的大小,则合适。如果您在编译时不知道数组的大小,std::vector 是合适的。

使用 std::arraystd::vector 的主要好处之一是您可以在变量为在函数调用中使用。如果使用常规数组,则数组会衰减为指针。您必须在另一个参数中传递大小,以帮助函数防止使用越界索引访问数组。

关于c++ - 简单的 C++ 数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901848/

相关文章:

c++ - 在堆栈与堆上对派生类对象使用基类指针

C++ 对象数组为每个对象返回相同的 char*

c++ - 如何使此初始化在 C++ 中合法?

c++ - 如何通过 operator= 在 shared_ptr 中释放内存?

c++ - static_assert 检查非模板类的模板构造函数中的值

c++ - std::async 不使用 std::launch::async 策略启动新线程

c++ - 如何正确格式化类实例引用

android - 构建 Android 应用程序时禁用 CMake 目标

c++ - swprintf 声明不匹配

c++ - std::this_thread::sleep_for() 可以有虚假唤醒吗?