如何打印random_shuffle向量<struct>的值
How to print values of a random_shuffle vector<struct>
我有一个结构数据类型的向量,我正在我的函数中random_shuffle我想打印出结果。我尝试了各种方法,但没有运气。我希望它控制随机播放的次数,并希望它能够打印出结果。我真的尝试过自己进行故障排除,我知道我需要制作一个 for 循环,但我只是不确定如何让它打印洗牌的结果,以及我是否希望它洗牌不止一张牌。任何帮助,不胜感激。
洗牌.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include "stdio.h"
#include "stdlib.h"
#include "ctime"
#include "cstdlib"
using namespace std;
struct node
{
int number;
string suit;
struct node *info;
};
int main()
{
vector<node> MyHand(52);
vector<int> getNum;
vector<string> getSuit;
int choice;
MyHand.push_back(node());
MyHand[0].number = 2;
MyHand[0].suit = "S";
MyHand[1].number = 2;
MyHand[1].suit = "H";
MyHand[2].number = 2;
MyHand[2].suit = "D";
MyHand[3].number = 2;
MyHand[3].suit = "C";
//2
MyHand[4].number = 3;
MyHand[4].suit = "S";
MyHand[5].number = 3;
MyHand[5].suit = "H";
MyHand[6].number = 3;
MyHand[6].suit = "D";
MyHand[7].number = 3;
MyHand[7].suit = "C";
//3
MyHand[8].number = 4;
MyHand[8].suit = "S";
MyHand[9].number = 4;
MyHand[9].suit = "H";
MyHand[10].number = 4;
MyHand[10].suit = "D";
MyHand[11].number = 4;
MyHand[11].suit = "C";
//4
MyHand[12].number = 5;
MyHand[12].suit = "D";
MyHand[13].number = 5;
MyHand[13].suit = "C";
MyHand[14].number = 5;
MyHand[14].suit = "D";
MyHand[15].number = 5;
MyHand[15].suit = "C";
//5
MyHand[16].number = 6;
MyHand[16].suit = "D";
MyHand[17].number = 6;
MyHand[17].suit = "C";
MyHand[18].number = 6;
MyHand[18].suit = "D";
MyHand[19].number = 6;
MyHand[19].suit = "C";
//6
MyHand[20].number = 7;
MyHand[20].suit = "D";
MyHand[21].number = 7;
MyHand[21].suit = "C";
MyHand[22].number = 7;
MyHand[22].suit = "D";
MyHand[23].number = 7;
MyHand[23].suit = "C";
//7
MyHand[24].number = 8;
MyHand[24].suit = "D";
MyHand[25].number = 8;
MyHand[25].suit = "C";
MyHand[26].number = 8;
MyHand[26].suit = "D";
MyHand[27].number = 8;
MyHand[27].suit = "C";
//8
MyHand[28].number = 9;
MyHand[28].suit = "D";
MyHand[29].number = 9;
MyHand[29].suit = "C";
MyHand[30].number = 9;
MyHand[30].suit = "D";
MyHand[31].number = 9;
MyHand[31].suit = "C";
//9
MyHand[32].number = 10;
MyHand[32].suit = "D";
MyHand[33].number = 10;
MyHand[33].suit = "C";
MyHand[34].number = 10;
MyHand[34].suit = "D";
MyHand[35].number = 10;
MyHand[35].suit = "C";
//10
MyHand[36].number = 11; //need to convert to string "J"
MyHand[36].suit = "D";
MyHand[37].number = 11;
MyHand[37].suit = "C";
MyHand[38].number = 11;
MyHand[38].suit = "D";
MyHand[39].number = 11;
MyHand[39].suit = "C";
//11 (J)
MyHand[40].number = 12; //need to convert to string "Q"
MyHand[40].suit = "D";
MyHand[41].number = 12;
MyHand[41].suit = "C";
MyHand[42].number = 12;
MyHand[42].suit = "D";
MyHand[43].number = 12;
MyHand[43].suit = "C";
//12 (Q)
MyHand[44].number = 13; //need to convert to string "K"
MyHand[44].suit = "D";
MyHand[45].number = 13;
MyHand[45].suit = "C";
MyHand[46].number = 13;
MyHand[46].suit = "D";
MyHand[47].number = 13;
MyHand[47].suit = "C";
//13 (K)
MyHand[48].number = 14; //need to convert to string "A"
MyHand[48].suit = "D";
MyHand[49].number = 14;
MyHand[49].suit = "C";
MyHand[50].number = 14;
MyHand[50].suit = "D";
MyHand[51].number = 14;
MyHand[51].suit = "C";
//14 (A)
while (1)
{
printf("1. Add a hand.n");
printf("2. Exit.");
scanf("%d", choice);
switch (choice)
{
case 1:
printf("nAdding a hand!n");
random_shuffle(MyHand.begin(), MyHand.end());
break;
case 2:
exit(1);
default:
printf("n Invalid Choice. n");
break;
}
}
}
我尝试过的代码:
switch (choice)
{
case 1:
printf("nAdding a hand!n");
random_shuffle(MyHand.begin(), MyHand.end(), MyHand);
for (vector<node>::const_iterator i = MyHand.begin(); i != MyHand.end(); ++i)
std::cout << *i << ' ';
break;
case 2:
exit(1);
default:
printf("n Invalid Choice. n");
break;
}
您的当前 for 循环不会编译,因为std::ofstream::operator<<
没有重载,需要const node
对象。通过添加自己的一个来解决此问题,例如:
std::ostream& operator<<(std::ostream& o, const node& n)
{
return o << n.number << " " << n.suit;
}
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 呼叫运营商<<临时
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 如何加入向量&lt; int&gt;到C 中的单个INT
- (C 14)操作员&lt;&lt;超负荷无法正如智能指针向量所预期的那样工作
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类