输出对象的多维向量

Output Multidimensional Vector of Objects

本文关键字:向量 对象 输出      更新时间:2023-10-16

所以,我试图简单地打印我正在创建的矢量的内容。从本质上讲,我试图输出玩家的int值(即1-4)和玩家的手牌(由Card对象组成)。例如,我想让newPlayerHand[1][1]输出"黑桃a",而newPlayerHand[1][2]输出"梅花j"

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操作符,但我似乎仍然得到一个无法解决的外部错误。(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];

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