因此,我试图简单地打印我正在创建的 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/