gpt4 book ai didi

c++ - 如果该结构的另一个成员已知,则修改 vector 中的结构成员

转载 作者:行者123 更新时间:2023-11-30 02:43:01 25 4
gpt4 key购买 nike

免责声明:我尝试过一般在线搜索和此处专门搜索。如果这个问题已经得到回答,请重定向我并关闭这个问题。

我有一个编码问题,我正在尝试使用以下代码解决它:

#include <fstream>
#include <map>
#include <string>
#include <vector>

using namespace std;

int main()
{
ifstream fin("gifts1.in", ios::in);
ofstream fout("gifts1.out", ios::out);

unsigned short NP;

struct person
{
string name;
unsigned int gave;
unsigned int received;
};

vector<person> accounts;

string tmp_name;
person buf_person;

fin >> NP;
accounts.resize(NP);
for (auto i : accounts)
{
fin >> tmp_name;
i.name = tmp_name;
i.gave = i.received = 0;
}

for (auto j : accounts)
{
string name;
fin >> name;

unsigned int sum, people;
fin >> sum >> people;
j.gave = sum;
if (people != 0)
{

for (int i = 1; i < people; i++)
{
string receiver_name;
fin >> receiver_name;
accounts.receiver_name.received = sum / people; // no idea here
}

j.gave -= sum % people; // if a person meant to give 200, but couldn't divide 3,
// he actually gave 197
}
}

fin.close();
fout.close();

exit(0);
}

内部 for 循环应该像这样工作:我得到一个 string receiver_name,我正在一个 vector 中搜索一个特定的 person 结构将此名称作为 name 成员并更改其 received 成员。

问题是:这可能吗?如果可能,我该怎么做?

最佳答案

vector<person>::iterator it = std::find_if(accounts.begin(), accounts.end(),
[&receiver_name](const person& p) { return p.name == receiver_name; });
if (it == accounts.end()) {
// No person with this name
} else {
person& found = *it;
// Do what you need here.
}

关于c++ - 如果该结构的另一个成员已知,则修改 vector 中的结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com