⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myvector.h

📁 mySQL waper c++ VC, C builder
💻 H
字号:
///////////////////////////////////////////////////////////////////////////////////////
//// vector.h
///////////////////////////////////////////////////////////////////////////////////////

#include <malloc.h>
#include <memory.h>

#ifndef __VECTOR_H__
#define __VECTOR_H__

template <class T> class vector_c
{
   public:
      vector_c();
      ~vector_c();

      int n_items();
      T &operator[]( int idx );
      void reset();
      void set_size( int size );
	   void del( int pos, int n_items = 1 );

      int add( T what );
      int add( T what, int pos );

	private:
		T *p;
		int n;
};

///////////////////////////////////////////////////////////////////////////////////////

template <class T> vector_c<T>::vector_c()
{
	p = 0;
	n = 0;
}

template <class T> vector_c<T>::~vector_c()
{
	reset();
}

///////////////////////////////////////////////////////////////////////////////////////

template <class T> T &vector_c<T>::operator[]( int idx )
{
	return( p[ idx ] );
}

template <class T> void vector_c<T>::reset()
{
	set_size( 0 );
}

template <class T> void vector_c<T>::set_size( int size )
{
	if ( !size )
	{

		if ( p )
		{
			free( p );
			p = 0;
		}

		n = 0;
	}
	else
	{
		T *old_p = p;
		p = ( T * ) malloc( sizeof( T ) * size );

      if ( size < n )
         n = size;

		if ( old_p )
		{
			memcpy( p, old_p, n * sizeof( T ) );
			free( old_p );
		}

		n = size;
	}
}

template <class T> int vector_c<T>::n_items()
{
	return( n );
}

///////////////////////////////////////////////////////////////////////////////////////

template <class T> int vector_c<T>::add( T what )
{
	set_size( n + 1 );

	( *this ) [ n - 1 ] = what;
	return( n - 1 );
}


template <class T> int vector_c<T>::add( T what , int pos )
{
	set_size( n + 1 );

	memmove( p + pos + 1, p + pos, sizeof( T ) * ( n_items() - pos - 1 ) );

	( *this ) [ pos ] = what;

	return pos;
}

template <class T> void vector_c<T>::del( int pos,int n_items )
{
   if ( !p )
      return;
	memcpy( p + pos, p + pos + n_items, sizeof( T ) * ( n - pos-n_items ) );
	set_size( n - n_items );
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -