如何在C ++中动态地向数组末尾添加元素?
我习惯使用向量来动态添加元素。但是,向量似乎不想处理对象数组。
所以,我的主要目标是拥有一个对象数组,然后能够将一个元素添加到数组的末尾以获取另一个对象。
编辑** 对不起,它的pushback()导致了我的问题。
class classex
{
private:
int i;
public:
classex() { }
void exmethod()
{
cin >> i;
}
};
void main()
{
vector <classex> vectorarray;
cout << vectorarray.size();
cout << vectorarray.push_back();
}
现在我知道push_back必须有一个参数,但是什么参数?
答案 0 :(得分:1)
阵列是固定大小的容器。因此扩大它们是不可能的。你可以解决这个问题,并在一个更大的空间中复制一个数组,并在旧的结尾处获得空间,但就是这样。
您可以创建一个比您当前需要的更大的数组,并记住哪些元素为空。当然它们永远不会是空的(它们至少包含0个),但这是一个不同的故事。
与数组一样,有许多容器,有些容器可以增长,就像stl容器一样:列表,向量,deques,集等等。
添加一个构造函数来设置i(只是为了给你的例子一个真实世界的触摸)你的示例classex,如下所示:
class classex {
public:
classex(int& v) : i(v) {}
private:
int i;
};
增长容器的示例如下所示:
vector <classex> c; // c for container
// c is empty now. c.size() == 0
c.push_back(classex(1));
c.push_back(classex(2));
c.push_back(classex(3));
// c.size() == 3
答案 1 :(得分:1)
现在我知道push_back必须有一个参数,但是什么参数?
参数是你想要附加到向量的东西。什么可能更简单或更期望?
顺便说一句,你真的,真的,真的不希望{99}的exmethod
classex
作为{{1}}的实际方法。这不是班级的工作方式。收集信息以创建实例不是课程工作的一部分。该类只是根据该信息创建实例。
答案 2 :(得分:-2)