C++ STL_array学习

array特点:连续空间,空间大小在定义的时候就确定了,你要多大就是多大,数组的开端和末尾是没有办法去控容的。

参考代码如下:

#include<iostream>
#include<array>
#include<ctime>
#include<cstdlib>
#include<stdexcept>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::array;
using std::exception;
long get_a_target_long()
{
	long target = 0;
	cout << "target (0~" << RAND_MAX << "):";
	cin >> target;
	return target;
}
string get_a_target_string()
{
	long target = 0;
	char buf[10];
	cout << "target (0~" << RAND_MAX << "):" << endl;
	cin >> target;
	sprintf_s(buf, "%d", target);
	return string(buf);
}
int compareLongs(const void* a, const void* b)
{
	return *(long*)a - *(long*)b;
}
int compareStrings(const void*a, const void*b)
{
	if (*(string*)a > *(string*)b)
		return 1;
	else if (*(string*)a < *(string*)b)
		return -1;
	else
		return 0;
}

namespace stl_array
{
	void test_array()
	{
			cout << "test_array()............." << endl;

		array<long, 50000> c;
		clock_t timeStart = clock();
		for (long i = 0; i < ASIZE; ++i)
		{
			try
			{
				c[i] = rand();
			}
			catch (exception& p) 
			{
				cout << "i=" << i << " " << p.what() << endl;
				abort();
			}
		
		}
		cout << "milli-seconds:" << (clock() - timeStart) << endl;
		cout << "array.size():" << c.size() << endl;
		cout << "array.front():" << c.front() << endl;
		cout << "array.back():" << c.back() << endl;
		cout << "array.data():" << c.data() << endl;

		long target = get_a_target_long();
		timeStart = clock();
		qsort(c.data(), ASIZE, sizeof(long), compareLongs);
		long* pItem = (long*)bsearch(&target, (c.data()), ASIZE, sizeof(long), compareLongs);
		cout << "qsort()+bsearch,milli-seconds:" << (clock() - timeStart) << endl;
		if (pItem != NULL)
			cout << "found," << *pItem << endl;
		else
			cout << "not found" << endl;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值