一个c++小问题的优化

来源:互联网 发布:淘宝衬衫描述怎么写 编辑:程序博客网 时间:2024/05/02 07:46

原要求见博客《有关野指针及c++其他问题小结(一)》
对于increaseDate的实现
我的代码实现复杂度过高。

void IncreaseDate(Date* date){    int year_ = date->year;    int month_ = date->month;    int day_ = date->day;    int everyMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};    if(day_ < everyMonth[month_ - 1])        {            day_++;        }    else        {            if(month_ == 2 && ((year_ % 4 == 0 &&year_ % 100 != 0 )||year_ % 400 == 0) )                {                    if(day_ == 28) day_ = 29;                    else                        {                            day_ = 1;                            month_++;                        }                }            else                {                    day_ = 1;                    if(month_ < 12) month_++;                    else                        {                            month_ = 1;                            year_++;                        }                }        }    date->year = year_;    date->month = month_;    date->day = day_;}

但是这里一种很好的实现,希望以后在类似的问题上好好地。

void Date::increment() {  ++day_;  if (day_ > daysOfMonth(year_, month_)) {    day_ = 1;    ++month_;    if (month_ > 12) {      month_ = 1;      ++year_;    }  }}

引以为戒

0 0
原创粉丝点击