欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)順序表的方法

 更新時間:2016年08月17日 09:48:19   作者:zgw285763054  
本文給大家?guī)砹薈++實現(xiàn)順序表的方法,代碼簡單易懂,附有注釋,感興趣的朋友一起看下吧

廢話不多說了,直接給大家上關(guān)鍵代碼了。

#pragma once
#include <assert.h>
template<class T>
class SeqList
{
public:
SeqList()
:_a(NULL)
,_size(1)
,_capacity(1)
{}
SeqList(T* a, size_t size)
:_a(new T[size])
,_size(size)
,_capacity(size)
{
for (size_t i = 0; i < _size; ++i)
{
_a[i] = a[i];
}
}
//拷貝構(gòu)造函數(shù)常規(guī)寫法
/*SeqList(const SeqList<T>& s)
:_a(new T[s._size])
,_size(s._size)
,_capacity(s._capacity)
{
for (size_t i = 0; i < _size; ++i)
_a[i] = s._a[i];
}*/
//拷貝構(gòu)造函數(shù)現(xiàn)代寫法
SeqList(const SeqList<T>& s)
:_a(NULL)
{
SeqList<T> tmp(s._a, s._size);
swap(_a, tmp._a);
_size = s._size;
_capacity = s._capacity;
}
~SeqList()
{
if (_a)
delete[] _a;
}
//賦值運算符重載常規(guī)寫法
SeqList<T>& operator=(const SeqList<T>& s)
{
if (this != &s)
{
T* tmp = new T[s._size];
for (size_t i = 0; i < s._size; ++i)
{
tmp[i] = s._a[i];
}
delete[] _a;
_a = tmp;
_size = s._size;
_capacity = s._capacity;
}
return *this;
}
//賦值運算符重載現(xiàn)代寫法
/*SeqList<T>& operator=(SeqList<T> s)
{
if (this != &s)
{
swap(_a, s._a);
_size = s._size;
_capacity = s._capacity;
}
return *this;
}*/
public:
void Print()
{
for (size_t i = 0; i < _size; ++i)
{
cout<<_a[i]<<" ";
}
cout<<endl;
}
void PushBack(const T& x)
{
_CheckCapacity();
_a[_size++] = x;
}
void PopBack()
{
assert(_size > 0);
--_size;
}
void Insert(int pos, const T& x)
{
assert(pos >= 0 && pos <= _size);
_CheckCapacity();
int iIndex = _size;
while (iIndex > pos) //int和size_t比較為什么不行?
{
_a[iIndex] = _a[iIndex-1]; 
--iIndex;
}
_a[iIndex] = x;
++_size;
}
void Erase(size_t pos)
{
assert(_size > 0 && pos < _size);
size_t index = pos;
while (index < _size-1)
{
_a[index] = _a[index+1];
++index;
}
--_size;
}
int Find(const T& x)
{
for (size_t i = 0; i < _size; ++i)
{
if (_a[i] == x)
{
return i;
}
}
return -1;
}
T& operator[](size_t index)
{
assert(index >= 0 && index < _size);
return _a[index];
}
void Reserve(size_t size) //保留空間,增容到size
{
_capacity = size;
_a = (T*)realloc(_a, _capacity * sizeof(T));
}
void Clear() //不釋放空間
{
_size = 0;
}
void Size()
{
return _size;
}
protected:
void _CheckCapacity()
{
if (_size+1 > _capacity)
{
_capacity = _capacity*2;
_a = (T*)realloc(_a, _capacity * sizeof(T));
}
}
protected:
T* _a;
size_t _size;
size_t _capacity;
};

以上所述是小編給大家介紹的順序表的C++實現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Qt中TableView與TreeView組件聯(lián)動實現(xiàn)

    Qt中TableView與TreeView組件聯(lián)動實現(xiàn)

    本文主要介紹了Qt中TableView與TreeView組件聯(lián)動實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-12-12
  • C++類與對象深入之構(gòu)造函數(shù)與析構(gòu)函數(shù)詳解

    C++類與對象深入之構(gòu)造函數(shù)與析構(gòu)函數(shù)詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學(xué)習,現(xiàn)在對我們對C++非常重要的一個知識點做出總結(jié),整理出來一篇博客供我們一起復(fù)習和學(xué)習,如果文章中有理解不當?shù)牡胤?還希望朋友們在評論區(qū)指出,我們相互學(xué)習,共同進步
    2022-06-06
  • Qt定時器(QTimer)的3種使用方法

    Qt定時器(QTimer)的3種使用方法

    本文主要介紹了Qt定時器(QTimer)的3種使用方法,主要包括QObject類提供的定時器,QTimer類提供的定時器,靜態(tài)的singleShot?()函數(shù)創(chuàng)建單觸發(fā)定時器,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Qt學(xué)習教程之表格控件螞蟻線詳解

    Qt學(xué)習教程之表格控件螞蟻線詳解

    如果有用過PS的選區(qū)工具應(yīng)該就會知道螞蟻線是什么東西了,就是用來表示選區(qū)的一種虛線,關(guān)鍵還是要動態(tài)的!下面這篇文章主要給大家介紹了關(guān)于Qt學(xué)習教程之表格控件螞蟻線的相關(guān)資料,需要的朋友可以參考下
    2018-07-07
  • 利用QT實現(xiàn)UDP聊天小程序

    利用QT實現(xiàn)UDP聊天小程序

    這篇文章主要為大家詳細介紹了潤滑利用QT的UDP技術(shù),實現(xiàn)兩個QT程序之間的聊天程序。文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習一下
    2022-11-11
  • C++實現(xiàn)Linux下彈出U盤的方法

    C++實現(xiàn)Linux下彈出U盤的方法

    這篇文章主要介紹了C++實現(xiàn)Linux下彈出U盤的方法,實例分析了C++在Linux平臺上進行IO操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • OpenCV mask的作用及如何制作掩模mask

    OpenCV mask的作用及如何制作掩模mask

    mask 不是馬斯克,是掩膜,可以用來遮蓋非感興趣區(qū),突出感興趣區(qū),使得圖像處理只專注于ROI部分,OpenCV中的很多函數(shù)用到mask,mask是什么?怎么制作一個mask?本文給大家分享OpenCV mask的作用及如何制作掩模mask,感興趣的朋友一起看看吧
    2023-02-02
  • C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考)

    C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考)

    這篇文章主要介紹了C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考),本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C語言模擬實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    C語言模擬實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言模擬實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言構(gòu)建連連看游戲(矩陣方式)

    C語言構(gòu)建連連看游戲(矩陣方式)

    這篇文章主要為大家詳細介紹了C語言構(gòu)建連連看游戲,采用矩陣方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論