对结构元素的向量进行排序

发布于 2024-12-07 17:47:34 字数 724 浏览 0 评论 0原文

我正在尝试对结构元素的向量进行排序,但我无法构造向量本身,这是

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

struct student_t{
      string name;
  int age,score;
}   ;

bool compare(student_t const &lhs,student_t const &rhs){
    if (lhs.name<rhs.name)
         return true;
    else if (rhs.name<lhs.name)
        return false;

    else
        if (lhs.age<rhs.age)
            return true;
        else if (rhs.age<lhs.age)
             return false;
    return lhs.score<rhs.score;

}
int main(){

               struct student_t st[10];







 return 0;
}

我声明 vectorst 时的代码,我无法访问结构的元素,请给我提示如何去做这件事

i am trying to sort vector of struct's elements,but i can't construct vector itself here is code

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

struct student_t{
      string name;
  int age,score;
}   ;

bool compare(student_t const &lhs,student_t const &rhs){
    if (lhs.name<rhs.name)
         return true;
    else if (rhs.name<lhs.name)
        return false;

    else
        if (lhs.age<rhs.age)
            return true;
        else if (rhs.age<lhs.age)
             return false;
    return lhs.score<rhs.score;

}
int main(){

               struct student_t st[10];







 return 0;
}

when i declared vector<student_t>st i can't access element of struct,please give me hint how to do it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

硬不硬你别怂 2024-12-14 17:47:34
std::vector<student_t> st;
for(unsigned i = 0; i < 10; ++i) st.push_back(student_t());
std::sort(st.begin(), st.end(), &compare);

您还可以使用此 vector 构造函数代替第 1-2 行:

std::vector<student_t> st (10 /*, student_t() */);

编辑:

如果您想使用键盘输入 10 个学生,您可以编写一个构造学生的函数:

struct student_t &enter_student()
{
     student_t s;
     std::cout << "Enter name" << std::endl;
     std::cin >> s.name;
     std::cout << "Enter age" << std::endl;
     std::cin >> s.age;
     std::cout << "Enter score" << std::endl;
     std::cin >> s.score;
     return s;
}
std::vector<student_t> st;
for(unsigned i = 0; i < 10; ++i) st.push_back(enter_student());
std::vector<student_t> st;
for(unsigned i = 0; i < 10; ++i) st.push_back(student_t());
std::sort(st.begin(), st.end(), &compare);

You could also use this vector constructor instead of lines 1-2:

std::vector<student_t> st (10 /*, student_t() */);

Edit:

If you want to enter 10 students with the keyboard you can write a function that constructs a student:

struct student_t &enter_student()
{
     student_t s;
     std::cout << "Enter name" << std::endl;
     std::cin >> s.name;
     std::cout << "Enter age" << std::endl;
     std::cin >> s.age;
     std::cout << "Enter score" << std::endl;
     std::cin >> s.score;
     return s;
}
std::vector<student_t> st;
for(unsigned i = 0; i < 10; ++i) st.push_back(enter_student());
眼中杀气 2024-12-14 17:47:34

对向量进行排序:

sort(st.begin(), st.end(), compare);

并读取向量的输入,您应该首先调整向量的大小或将输入调整为临时的
变量并将其推送到您的向量:

www.cplusplus.com/reference/stl/vector/矢量/

to sort the vector:

sort(st.begin(), st.end(), compare);

and to read input to your vector you should first resize the vector or input to a temporary
variable and push it to your vector:

www.cplusplus.com/reference/stl/vector/vector/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文