C++类中的动态数组
Dynamic array in a class in C++
我有一个动态数组,我用类中的函数为其分配内存:
double *val;
int n; // dimension
void alloc (int nn) { // memory allocation for vector
n = nn;
val = new double[n];
}
但是当我尝试将数据放入主要内容时,我遇到了以下问题:
当我输入:
a.val[3] = {1.0 , 1.0 , 1.0};
我收到以下非常模棱两可的错误:
syntax error : missing ';' before '{'
syntax error : '{'
但是当我输入:
a.val[1]=1.0;
a.val[2]=1.0;
a.val[3]=1.0;
它工作得很好。有人知道为什么吗?
您只能以这种方式初始化数组:
double a[3] = {1.0, 1.0, 1.0};
您的替代方案是:
void alloc (int nn) { // memory allocation for vector
n = nn;
val = new double[n];
// one option is:
for (int i = 0; i < n; i++)
{
val[i] = 1.0;
}
// or you can also do: (thanks to Benjamin)
std::fill_n(val, n, 1.0);
// or:
std::fill(val, val + n, 1.0);
}
a.val[3] = {1.0 , 1.0 , 1.0};
这仅适用于初始化。
在您的情况下,您首先动态分配了进行初始化的空间。
这将起作用
float val[3]={1.0,1.0,1.0};
您只能使用 {data} 进行启动但是,如果您仍然想使用它来设置多个值,请尝试以下操作:
double values[3] = {1.0, 2.0, 3.0};
memcpy(&(a.val), &values, sizeof(values));
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错