如何声明包含整数数组的对象
How to declare an object which contains an array of integers
(C++( 嗨,我在声明对象时遇到问题,让我们先看看它:
class arr1D
{
protected:
int size;
int *arr;
public:
arr1D( int a[] ):size(sizeof(a)/sizeof(a[0])), arr(new int[size])
{
for(int i = 0; i < size; i++)
{
arr[i] = a[i];
}
}
arr1D( int siz = 10 ):size(siz), arr(new int[size])
{
for( int i = 0; i < size; i++)
{
arr[i] = 0;
}
}
friend ostream & operator<<( ostream &,const arr1D &);
};
int main()
{
//arr1D *a1 = new arr1D;
//cout << *a1;
//prints "arr: 0 0 0 0 0 0 0 0 0 0 size: 10"
return 0;
}
ostream & operator<<( ostream &_return, const arr1D &a)
{
_return << "arr: ";
for(int i=0;i<a.size;i++)
{
cout << *(a.arr+i) << " ";
}
_return << "size: " << a.size;
return _return;
}
我想声明一个包含整数数组的对象 像这样:
arr1D a1[] = {1,2,3,4,5}; // pseudo-code
这应该打印如下内容:
arr: 1 2 3 4 5 size: 5
感谢您的帮助!
我想声明一个包含整数数组的对象 像这样:(伪代码("arr1D a1[] = {1,2,3,4,5};"这 应该打印这样的东西:"arr:1 2 3 4 5尺寸:5"谢谢 帮助!
可以通过在类中使用初始值设定项列表构造函数来使用它。
如下所示:
#include <iostream>
#include <initializer_list>
class arr1D
{
protected:
int size;
int *arr;
public:
arr1D(std::initializer_list<int> input) : size(input.size())
{
int* temp = new int[size];
int index = 0;
for (const auto& it : input)
{
temp[index] = it;
++index;
}
arr = temp;
}
// reaming code...
在这里观看直播
请注意,您还需要arr1D
类中分心器,否则会出现内存泄漏,因为您的类中有指针成员。
或者,使用智能指针,这是处理动态内存的智能方法,即在堆中分配的内容。
在此处查看示例解决方案
#include <iostream>
#include <initializer_list>
#include <memory>
class arr1D
{
protected:
int size;
std::unique_ptr<int[]> arr;
public:
arr1D(std::initializer_list<int> input) : size(input.size())
{
arr = std::unique_ptr<int[]>(new int[size]);
int index = 0;
for (const auto& it : input)
{
arr[index] = it;
++index;
}
}
.......
.......
std::ostream & operator<<(std::ostream &_return, const arr1D &a)
{
_return << "arr: ";
for (int i = 0; i< a.size; i++) std::cout << a.arr[i] << " ";
_return << "size: " << a.size;
return _return;
}
PS:不过,这更适合用std::vector<>
来处理。如果您不知道其工作原理,请参阅此问题。
编辑:正如@M.M提到的,按值传递std::initializer_list
是合适的,而不是通过引用,编辑了类的构造函数。
相关文章:
- 从二进制文件中读取整数数组
- 新的整数数组向右移动?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 从两个 4x64 位整数数组中获取取模
- 字符到整数数组
- 从函数参数 [C++] 复制整数数组
- 指向整数数组和打印总和的指针
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 线程安全整数数组?
- 整数数组中最长的回文
- 在大整数数组中查找子数组
- 查找整数数组中最接近的数字
- 创建<int>对整数数组指针的矢量引用 (C++)
- 整数指针数组的元素是否可以指向整数数组?
- 如何将整数数组相乘得到一个数字?
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 将文本文件读入整数数组