#P1104. 生日

#include <iostream>
#include <algorithm> 
#include <vector>
#include <string>
using namespace std;
struct Student
{
    int id;
    string name;
    int year;
    int month;
    int day;
};
bool cmp(const Student&a,const Student&b)//自定义排序函数 
{
    if(a.year!=b.year) 
    {
        return a.year<b.year;
    }
    else if(a.month!=b.month)
    {
        return a.month<b.month;
    }
    else if(a.day!=b.day)
    {
        return a.day<b.day;
    }
    else 
    {
        return a.id>b.id; 
    }
}
int main ()
{
    int n,i;
    cin >> n;
    vector <Student> Student(n);
    for(i=0;i<n;i++)
    {
    
        Student[i].id=i;
        cin >> Student[i].name ;
        cin >> Student[i].year >> Student[i].month >>Student[i].day;
    }
//    for(i=0;i<n;i++)
//    {
//        cout << Student[i].name<<endl;
//    }
    sort(Student.begin(),Student.end(),cmp);//sort对结构体进行排序 
    
    for(i=0;i<n;i++)
    {
        cout << Student[i].name<<endl;
    }
    
 } 

<think>好的,用户想了解FreeMarker模板语法中if条件的用法,特别是需要示例。我需要先回忆FreeMarker的基本语法结构,尤其是条件判断部分。 首先,FreeMarker的条件语句使用<#if>、<#elseif>、<#else>标签。用户可能想知道如何编写这些标签,以及注意事项。比如,条件表达式不需要用${}包裹变量,直接使用变量名即可。这点在引用[4]中提到过,用户如果错误地使用${}在条件中会导致问题,所以需要强调。 接下来,用户可能需要多个条件的示例,比如逻辑运算符(&&、||)的使用,或者比较数字、字符串的情况。引用[2]和[3]提到了处理多个条件和数字比较的情况,应该包含这些例子。 另外,用户可能对变量存在性检查感兴趣,比如使用??操作符判断变量是否存在或非空。这在处理数据时很常见,可以给出示例。 还要注意FreeMarker的两种语法风格:标准语法和方括号替代语法。用户可能在示例中需要这两种写法,尤其是替代语法,如引用[2]中提到的用[#if]的形式。 还需要提醒用户不能在条件语句中使用${},而是直接写变量名,这点在引用[4]中有说明,避免常见错误。 最后,生成相关问题,可能涉及elseif的使用、多条件组合、变量存在性检查以及替代语法的写法。确保问题覆盖用户可能遇到的后续疑问。 总结回答结构:先介绍基本语法,给出示例,然后分点详细说明不同情况,最后注意事项和常见错误。这样用户能逐步理解并应用。</think>### FreeMarker模板if条件语句详解 FreeMarker的条件判断支持标准的if-elseif-else结构,以下是具体用法和示例: #### 一、基础语法结构 ```freemarker <#if condition1> 代码块1 <#elseif condition2> 代码块2 <#else> 默认代码块 </#if> ``` *注意:所有条件表达式直接使用变量名,无需使用${}取值*[^4] #### 二、典型使用场景示例 1. **简单布尔判断** ```freemarker <#if user.isVIP> <p>尊享VIP服务</p> </#if> ``` 2. **数值比较** ```freemarker <#if product.stock gt 10> <#-- gt表示大于 --> 库存充足 <#elseif product.stock == 0> 已售罄 <#else> 仅剩最后${product.stock}件 </#if> ``` 3. **多条件组合** ```freemarker <#if (temperature > 30) && (weather == "sunny")> <p>开启高温预警</p> </#if> ``` 4. **变量存在性检查** ```freemarker <#if user.birthday??> 生日:${user.birthday?string("yyyy-MM-dd")} <#else> 生日未登记 </#if> ``` #### 三、替代语法(方括号格式) ```freemarker [#if status == "processing"] <span class="warning">处理中</span> [/#if] ``` #### 四、注意事项 1. 字符串比较需显式引号包裹 ```freemarker <#if os == "ios"> <#-- 正确 --> <#if os == ios> <#-- 错误:会查找名为ios的变量 --> ``` 2. 支持运算符优先级处理 ```freemarker <#if (a > 5) && (b < 10 || c == 0)> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值