有个列表,往里面添加内容,如果对象已存在,只更新其属性,否则添加新一项。
#include <iostream> #include <string> #include <vector> using namespace std; struct test { char s; int score; }; void print_v1(vector<test> &res) { vector<test>::iterator it = res.begin(); for (; it != res.end(); ++it) { cout << "[" << it->s << "," << it->score << "]" << endl; } } void add(vector<test> &res, const test i) { vector<test>::iterator it2 = res.begin(); bool flag = false; for (; it2 != res.end(); ++it2) { if (it2->s == i.s) { it2->score += i.score; flag = true; } } if (!flag) res.push_back(i); } int main() { vector<test> res; struct test a1; a1.s = 'A'; a1.score = 20; struct test a2; a2.s = 'B'; a2.score = 40; struct test a3; a3.s = 'C'; a3.score = 35; res.push_back(a1); res.push_back(a2); res.push_back(a3); print_v1(res); struct test i1; i1.s = 'D'; i1.score = 55; struct test i2; i2.s = 'A'; i2.score = 60; add(res, i1); add(res, i2); cout << "------------" << endl; print_v1(res); system("pause"); return 0; }
运行结果: