提问人:Christian Whitehead 提问时间:11/29/2017 最后编辑:Christian Whitehead 更新时间:11/29/2017 访问量:59
尝试传递结构类型的向量,但没有控制台输出
Trying to pass a vector of a struct type but no console output
问:
我正在读取一个文件并将数据存储在结构类型的向量中。我有 3 个不同的功能:
- readFile() // 读取一个文本文件,并获取一个名称和一周的工作时间。
insert arg here
- bubbleSort('more arg') // 不言自明
- output('arg') // 输出所述向量的内容
功能原型:
void readFile(vector<Employee *> workers, int numOfEmployees);
void bubbleSort(vector<Employee *> workers, int numOfEmployees);
void output(vector<Employee *> workers, int numOfEmployees);
结构:
struct Employee
{
string name;
vector<int> hours;
int totalHours;
}
主要:
vector<Employee *> workers;
int numOfEmployees = 0;
readFile(workers, numOfEmployees);
bubbleSort(workers, numOfEmployees);
output(workers, numOfEmployees);
cout << endl;
system("pause");
return 0;
read文件:
ifstream fin;
fin.open("empdata4.txt");
if (fin.fail())
{
cout << "File failed to open. Program will now exit.\n";
exit(1);
}
fin >> numOfEmployees;
workers.resize(numOfEmployees);
for (int row = 0; row < numOfEmployees; row++)
{
workers[row] = new Employee;
workers[row]->hours.resize(7);
fin >> workers[row]->name;
for (int i = 0; i < 7; i++)
{
fin >> workers[row]->hours[i];
}
}
出于显而易见的原因排除冒泡排序
输出:
for (int i = 0; i < numOfEmployees; i++)
{
cout << workers[i]->name << " ";
for (int x = 0; x < 7; x++)
{
cout << workers[i]->hours[x] << " ";
}
cout << endl;
}
控制台输出是空白的,减去主输出,我想我在大多数情况下都设置正确,但我仍然不知道。感谢您的帮助!cout << endl;
system("pause");
编辑:添加了函数原型和结构
答:
1赞
lamandy
11/29/2017
#1
将函数标头更改为
void readFile(vector<Employee *>& workers, int& numOfEmployees);
void bubbleSort(vector<Employee *>& workers, int& numOfEmployees);
void output(vector<Employee *>& workers, int& numOfEmployees);
如果没有引用 &,您将按值传递,因此您对函数中的向量和 int 所做的任何修改都不会影响 main 中的向量和 int,因此 main 中的向量始终为空。
更好的是,甚至不需要numOfEmployees。
void readFile(vector<Employee *>& workers);
void bubbleSort(vector<Employee *>& workers);
void output(vector<Employee *>& workers);
如果您需要员工人数,只需致电workers.size()
评论