当前位置: 首页 > 知识库问答 >
问题:

如何在C++中打印出物体的二维矢量?

章烨烨
2023-03-14
class Obj{
public:
    int x;
    string y;
};

vector<Obj> a(100);

vector< vector<Obj> > b(10);
for(int i=0; i<b.size(); i++){
    for(int j=0; j<b[i].size(); j++)
      cout << b[i][j];
    cout << endl;
}

错误信息:

D:\main.cpp:91:错误:与“operator<<”不匹配(操作数类型为“std::ostream{aka std::basic_ostream}”和“__gnu_cxx::__alloc_traits>::value_type{aka Obj}”)cout<

共有1个答案

曹建华
2023-03-14

您的问题与向量无关,而是与将某个用户定义类型obj的对象发送到标准输出有关。当您使用运算符<<将对象发送到输出流时:

cout << b[i][j];

流不知道如何处理它,因为12个重载中没有一个接受用户定义的类型obj。您需要为您的类obj重载运算符<<:

std::ostream& operator<<(std::ostream& os, const Obj& obj) {
    os << obj.x  << ' ' << obj.y;
    return os;
}

甚至objs的向量:

std::ostream& operator<<(std::ostream& os, const std::vector<Obj>& vec) {
    for (auto& el : vec) {
        os << el.x << ' ' << el.y << "  ";
    }
    return os;
}
 类似资料:
  • 如何将的内容打印到屏幕? 实现以下< code >运算符的解决方案 以下是我目前所拥有的,没有单独的功能:

  • 我试图使用“cout”将一个整数向量打印到终端,但是在编译过程中我得到一条错误消息: 没有“运算符”的匹配项 代码片段如下所示: 给向量赋值没有错误,只有代码的“cout”部分出错

  • 这是我在一个俄文网站上得到的代码,我曾尝试使用pair函数,但所有的尝试都失败了。请指导我如何做到这一点。

  • 我试图打印每个单词的第一个字符放入一个二维数组。我得到一个错误,当我试图打印它的子串。 我得到一个不可编译的源代码错误。

  • 我正在使用push_back()函数插入这些元素,我想知道 我如何打印向量c的内容? 我尝试过

  • 问题内容: 我对二维数组有问题。我有这样的显示: 我基本上想要显示为: 这是我的代码: 问题答案: 输出量 当然,您可以像其他答案中提到的那样交换7和5,以获得每行7。