我试图循环对象的矢量并打印对象的每个元素

时间:2017-10-25 12:16:42

标签: c++ for-loop vector output

我正在制造飞机空气控制系统。有一个飞机物体,有一个称为“飞机列表_”的矢量,它保存所有飞机物体。 我正在尝试编写一个名为“ListAllAircraft”的方法,它将打印所有飞机列表的内容,有人可以帮忙吗?

以下是我对它的前两个猜测,既没有效果

std::vector<Aircraft> ListAllAircraft(std::vector<Aircraft> aircraftList_)
{
    std::cout << aircraftList_;
}



std::vector<Aircraft> ListAllAircraft(std::vector<Aircraft> aircraftList_)
{
    for (int i = 0; i < sizeof(aircraftList_); i++)
    {
        std::cout << aircraftList_.at(i);
    }
}

我能得到一些帮助吗?

2 个答案:

答案 0 :(得分:1)

使用range-based for loop是一种更简单的迭代向量的方法。

void ListAllAircraft(std::vector<Aircraft> &aircraftList_)
{
    for (auto const &aircraft : aircraftList_)
    {
        std::cout << aircraft;
    }
}

使用sizeof是错误的。 sizeof operator查询内存中对象的大小。这将包括std :: vector特定实现的所有内部成员。要查询std :: vector的实例以获取它存储的元素数,可以使用std::vector::size

要使流输出正常工作,您需要为您的飞机类定义stream insertion operator。否则,当您致电std::cout << aircraft;时,编译器无法知道您要打印的内容。 这个插入操作员应该如何看起来完全取决于您的飞机等级以及您希望为每架飞机打印的内容。它可能是这样的:

std::ostream& operator<<(std::ostream& stream, const Aircraft& aircraft)
{
    stream << aircraft.name 
    return stream;
}

答案 1 :(得分:0)

你的函数都没有返回std :: vector

似乎他们回归无效。此代码无法编译