2020-09-11杂记

提示:杂记
          时间:2020/09/11



一、判断闰年

闰年:
能被4整除,不能被100整除。
能被4整除,也能被100整除(能被400整除)。

int  fun(int year)
{
     if((year%4==0&&year%100!=0)||year%400==0)
     {
          return 366;
     }
         return  365  
}

二、增强型for循环

1. 适用对象

 (1)数组、容器 

2. 代码

#include <iostream>
#include<vector> 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

int main(int argc, char** argv) {
	int arry[5] = { 3,4,2,8,9 };
	vector<int>number;
	number.push_back(2);
	number.push_back(7);
	number.push_back(9);
	number.push_back(6);
	number.push_back(3);
	//数组
	for (auto a : arry)
	{
		cout <<"arry:"<< a << endl;
	}
	//容器
	for (auto a : number)
	{
		cout << "number:" << a << endl;
	}
	//迭代器
	for (auto it = number.begin(); it != number.end(); it++)
	{
		cout << "it:"<<*it << endl;
	}

	system("pause");
		return 0;
}

Dev-c++5.11 不支持


三、容器(数组)排序(stl)

 使用标准库函数

1.分类

参考资料:
      c语言网

  1. 容器自带的sort()函数
         只有list 容器自带sort()函数
         容器vector,deque,string没有自带的sort()成员
  2. std::sort()
         标准库的成员函数sort()函数,能对大多数类型进行比较, 也可以自己定义比较的类型。
         使用时应该添加头文件:#include< algorithm>
    注意:sort() 函数受底层实现方式的限制,它仅适用于普通数组和部分类型的容器。换句话说,只有普通数组和具备以下条件的容器,才能使用 sort() 函数:
    (1)、容器支持的迭代器类型必须为随机访问迭代器。这意味着,sort() 只对 array、vector、deque 这 3 个容器提供支持。

     (2)、如果对容器中指定区域的元素做默认升序排序,则元素类型必须支持<小于运算符;同样,如果选用标准库提供的其它排序规则,元素类型也必须支持该规则底层实现所用的比较运算符;
     (3)、sort() 函数在实现排序时,需要交换容器中元素的存储位置。这种情况下,如果容器中存储的是自定义的类对象,则该类的内部必须提供移动构造函数和移动赋值运算符。

     (4)、另外还需要注意的一点是,对于指定区域内值相等的元素,sort() 函数无法保证它们的相对位置不发生改变。

2.示例

  1. list容器
    代码如下(示例):
list<int>test;
test.sort();//为升序排序,
test.sort(greater<int>())//降序的是:
  1. std:sort()

template < class RandomAccessIterator>
//使用operator<进行比较,默认升序排序,
void sort (RandomAccessIterator first, RandomAccessIterator last );
template<class RandomAccessIterator, class Compare>
//第二个版本使用comp做比较
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

less(小于)
greater(大于)
equal_to(等于)
not_equal_to(不相等)
less_equal(小于等于)
greater_equal(大于等于)

代码如下(示例):

#include <iostream>
#include<vector> 
#include<list>
#include<algorithm>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

int main(int argc, char** argv) {
	int arry[5] = { 3,4,2,8,9 };
	vector<int>number;
	list<int>test;
	test.push_back(3);
	test.push_back(5);
	test.push_back(1);
	test.push_back(8);
	test.push_back(7);
	number.push_back(2);
	number.push_back(7);
	number.push_back(9);
	number.push_back(6);
	number.push_back(3);
	test.sort();//容器排序,默认升序
	
	//降序为:test.sort(greater<int>())

	sort(arry,arry+5);//默认升序
	sort(number.begin(), number.end(), greater<int>());//降序

	//数组
	for (auto a : arry)
	{
		cout <<"arry:"<< a << endl;
	}
	//容器vector
	for (auto a : number)
	{
		cout << "number:" << a << endl;
	}
	//容器list
	for (auto it = test.begin(); it != test.end(); it++)
	{
		cout << "it:"<<*it << endl;
	}

	system("pause");
		return 0;
}


版权声明:本文为weixin_43519971原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。