C ++列表/矢量帮助

时间:2011-06-24 02:09:13

标签: c++

我是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);
}

listvector都不起作用 - 我的错误列表中显示“list / vector不是模板”。

我应该使用哪个listvector?我该如何正确实施呢?

7 个答案:

答案 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::liststd::vector

他们也没有名为add的成员函数。您可能需要查找C++ reference

答案 2 :(得分:4)

Vector和list是std命名空间的一部分。所以你应该声明你的矢量和你的列表:

std::list<Bubble> bubbles;
std::vector<Bubble> bubbles_two;

此外,添加元素的成员函数是push_back。

答案 3 :(得分:2)

listvector位于std命名空间中,因此您必须在那里查找。

std::vector<Bubble> bubbles;

在任何一种情况下,都使用.push_back附加到容器。如有疑问,通常应该更喜欢vector

答案 4 :(得分:2)

您在此处缺少命名空间。列表和向量都是标准命名空间的一部分,这意味着您可以在文件开头写一次using namespace std;或者每次写std::liststd::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;
}
}