C++ Vector 容器按自定义属性排序
//y正序
bool Sort_y(Rect rect1, Rect rect2) {
return rect1.y < rect2.y;
}
//x正序
bool Sort_x(Rect rect1, Rect rect2) {
if (rect1.y == rect2.y)
{
return rect1.x < rect2.x;
}
else
{
return false;
}
}
//测试
void CLayoutAnalysisDlg::OnBnClickedTestButton()
{
Rect rect1;
vector<Rect> rVecRect;
rect1.x = 2;
rect1.y = 3;
rect1.width = 10;
rect1.height = 20;
rVecRect.push_back(rect1);
rect1.x = 9;
rect1.y = 2;
rect1.width = 60;
rect1.height = 40;
rVecRect.push_back(rect1);
rect1.x = 1;
rect1.y = 5;
rect1.width = 10;
rect1.height = 30;
rVecRect.push_back(rect1);
rect1.x = 5;
rect1.y = 2;
rect1.width = 20;
rect1.height = 10;
rVecRect.push_back(rect1);
//y排序
sort(rVecRect.begin(), rVecRect.end(), Sort_y);
//x排序
sort(rVecRect.begin(), rVecRect.end(), Sort_x);
int a = 0;
}
C++ Vector 容器按自定义属性求和
#include <vector>
#include <string>
using namespace std;
struct Grade
{
string name;
int grade;
};
int main()
{
Grade subject[3] = {
{ "English", 80 },
{ "Biology", 70 },
{ "History", 90 }
};
int sum = accumulate(subject, subject + 3, 0, [](int a, Grade b){return a + b.grade; });
cout << sum << endl;
system("pause");
return 0;
}