我是C ++的新手,所以这可能是一个非常简单的问题,但我无法在网上找到任何有帮助的例子。
我已经定义了自己的Bubble
类,我需要创建一个vector
/ list
(我已经习惯了C#和Java,所以我不知道哪个是正确)动态存储Bubble
个对象。到目前为止,这是我的代码:
#include "Bubble.h"
#include <vector>
#include <list>
int backgroundImages[10];
list<Bubble> bubbles;
vector<Bubble> bubbles_two;
Bubble b;
void AppMain()
{
loadImages();
ViewAdd(backgroundImages[8], 0,0);
b = Bubble();
b.velocity = Vector2D(9,4);
//I know this can't be right..
bubbles.add(b);
bubbles_two.add(b);
}
list
和vector
都不起作用 - 我的错误列表中显示“list / vector不是模板”。
我应该使用哪个list
或vector
?我该如何正确实施呢?
答案 0 :(得分:7)
函数vector.add()和list.add()不存在。
#include "Bubble.h"
#include <vector>
#include <list>
int backgroundImages[10];
std::list<Bubble> bubbles(); // use the std namespace and instantiate it
std::vector<Bubble> bubbles_two(); // same here
Bubble b;
void AppMain()
{
loadImages();
ViewAdd(backgroundImages[8], 0,0);
b = Bubble();
b.velocity = Vector2D(9,4);
//I know this can't be right..
bubbles.push_back(b); // std::list also defines the method push_front
bubbles_two.push_back(b);
}
矢量和列表之间几乎没有明显的差异,但在功能上,有。
与其他基准标准相比 序列容器(deques和 列表),矢量通常是最多的 及时有效地访问 元素以及添加或删除元素 从序列的最后。对于 涉及插入或的操作 去除其他位置的元素 比结束时,他们的表现要差于 deques和list,并且少了 一致的迭代器和引用 比列表。
与其他基准标准相比 序列容器(载体和 deques),列表执行一般 更好地插入,提取和 在任何位置移动元素 容器,因此也在 强化使用的算法 这些,就像排序算法一样。
答案 1 :(得分:5)
它们位于std
命名空间中。和C ++标准库的所有部分一样。因此,他们被正确地称为std::list
和std::vector
。
他们也没有名为add
的成员函数。您可能需要查找C++ reference。
答案 2 :(得分:4)
Vector和list是std命名空间的一部分。所以你应该声明你的矢量和你的列表:
std::list<Bubble> bubbles;
std::vector<Bubble> bubbles_two;
此外,添加元素的成员函数是push_back。
答案 3 :(得分:2)
list
和vector
位于std
命名空间中,因此您必须在那里查找。
std::vector<Bubble> bubbles;
在任何一种情况下,都使用.push_back
附加到容器。如有疑问,通常应该更喜欢vector
。
答案 4 :(得分:2)
您在此处缺少命名空间。列表和向量都是标准命名空间的一部分,这意味着您可以在文件开头写一次using namespace std;
或者每次写std::list
和std::vector
,在全局范围内包含命名空间你在哪里使用变量。
答案 5 :(得分:1)
尝试
std::list<Bubble> bubbles;
std::vector<Bubble> bubbles_two;
列表和向量在std
命名空间中定义。
答案 6 :(得分:0)
#include <iostream> //Desouky//
using namespace std;
struct node
{
int data;
node* link= NULL;
};
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
node* head = new node;
node*temp = new node;
head = temp;
int x;
cin >> x;
temp->data = x;
while (cin >> x)
{
node* temp1 = new node;
temp1->data = x;
temp->link = temp1;
temp = temp->link;
}
temp = head;
while (temp != NULL)
{
cout << temp->data << " ";
temp = temp->link;
}
}