c++ - 输出对象的多维 vector

标签 c++ vector cout

因此,我试图简单地打印我正在创建的 vector 的内容。本质上,我试图输出一个 int 类型的玩家(即 1-4)和由 Card 对象组成的玩家手牌。因此,例如,我试图让它达到 newPlayerHand[1][1] 会给我“黑桃 A”,而 newPlayerHand[1][2] 会输出“Jack of Clubs”

void Blackjack::deal()
{
// create a new hand
vector < vector < Card >> newPlayerHand;

for (int i = 0; i < numPlayers; i++) 
{
    vector < Card > player; // Create an empty row
        for (int j = 0; j < 2; j++) {
            player.push_back(dealCard()); // Add an element(column) 
                                          // to the row
           newPlayerHand.push_back(player); // Add the row to the main vector'
           cout << newPlayerHand[i][j];
        }

}
}

上面的代码对我来说在逻辑上看起来和听起来都是正确的,但是当我尝试时它给了我错误“No such operator <<”

cout << newPlayerHand[i];

任何关于我在这里哪里出错的建议或提示将不胜感激。

好的,所以我已经对其进行了编辑以说明 ostream 运算符,但我似乎仍然收到 Unresolved external 错误。 (basic_ostream)

template<typename T>
ostream& operator<<(ostream& os, const vector<T>& v)
{
    copy(v.begin(), v.end(), std::ostream_iterator<T>(std::cout, " ")); 
 return os;
}

最佳答案

您的问题不在于 vector 。就是这行代码。

cout << newPlayerHand[i][j];

执行上述步骤时,要输出的对象是数据类型卡片。 "<<"ostream 运算符知道如何显示基本数据类型,而不是我们创建的数据类型。因此,为其提供适当的结构以输出卡片数据类型的值,然后您就可以继续了。

关于c++ - 输出对象的多维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270486/

相关文章:

c++ - cout 指向数组项的指针打印出的值与预期不同

c++ - 在无符号整数中使用标志号

c++ - vector.push() 和 vector.reserve() 上的 bad_alloc

c++ - 快速将 unsigned char vector 转换为 POD 结构 vector ,反之亦然

c++ - 当程序作为服务运行时重定向 std::cout

c++ - 字符串输出不完整 - 奇怪的行为

c++ - 函数模板参数推导

c++ - Boost序列化多个对象

c++ - 对基类模板成员函数的访问不明确

java - 写入具有 Vector 属性的对象时出现 java.io.NotSerializedException