侯捷STL—容器array

容器array

为什么要把array封装为容器,放在STL中?
因为封装容器array后,就可以使用STL标准迭代器、算法、仿函数等,适应STL生态

一、array使用

在这里插入图片描述

#include <array>
#include <iostream>
#include <ctime>
#include <cstdlib>	//qsort, bsearch,

#define ASIZE 500000

long get_a_target_long()		//输入一个数
{
	long target = 0;
	cout << "target (0~)" << RAND_MAX << ")" << endl;
	cin >> target;
	return target;
}
int compareLongs(const void* p1, const void* p2)
{
	return (*(long*)p1) - (*(long*)p2);
}

namespace jj01
{
void test_array()
{
	cout<<"\ntest_array().........\n";
	
	array<long, ASIZE> array;

	colok_t timestart = clock();
	for (long i = 0; i < ASIZE; ++i)
	{
		c[i] = rand();
	}
	
	cout << "milli-seconds:" << (clock()-timestart) << endl;
	cout << "array.size() = " << array.size() << endl;
	cout << "array.front() = " << array.front() << endl;
	cout << "array.back() = " << array.back() << endl;
	cout << "array.data() = " << array.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 << "fount, << *pItem << endl; 
	}
	else
	{
		cout << "not fount!" << endl;
	}
}
}

二、array源码解析

template<class _Tp, std::size_t _Nm>
struct array{
	typedef _Tp		value_type;
	typedef _Tp*	pointer;
	typedef value_type* iterator;	//迭代器是指针  T*

	//成员
	value_type _M_instance[_Nm ? _Nm : 1];
	//函数
	iterator begin(){ return iterator(&_M_instance[0]); }
	iterator end(){ return iterator(&_M_instance[_Nm]);}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
侯捷STL源码剖析》是一本深入剖析STL源码的经典著作。STL(Standard Template Library)是C++标准模板库的简称,是C++程序员广泛使用的一个重要工具。本书对STL的各个组成部分进行了详细的讲解和解析。 首先,本书以容器为切入点,分析了STL的数据结构和算法。它详细介绍了STL的各种容器,如vector、list、deque、set、map等,以及它们的实现原理和使用方法。对于每种容器,书中都给出了相应的源码分析和示例代码,使读者能够深入了解其内部实现机制。 其次,本书还讲解了STL的算法部分。它涵盖了诸多常用的算法,如排序、查找、删除、替换等,以及它们的源码分析和使用示例。通过对这些算法的探讨,读者可以更好地理解STL的设计思想和优秀的性能。 此外,本书还介绍了STL的迭代器和适配器等重要概念。它详细解析了迭代器的各种类型和特性,以及它们在STL中的应用。同时,它还介绍了适配器的原理和使用方法,通过适配器的灵活运用,可以方便地扩展STL的功能。 总之,《侯捷STL源码剖析》通过对STL源码的剖析,帮助读者深入了解STL的设计和实现,使得读者能够更好地应用STL来解决实际问题。同时,它也为读者提供了学习和理解其他C++库的思路和方法。无论是初学者还是有经验的程序员,这本书都是一本值得阅读的重要参考书籍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值