#include
using namespace std;
template class ind_array;
template class array
//default is empty matrix
//array(t a) //array for scalar: array a=10;
array(int m0)
array(const array& a,int len0=-1);
//destructor
~array()
int size() const
//operator overloading
array& operator+=(t s);
t& operator(int i)
ind_arrayoperator(const array& ind);//
array& operator=(const array& a);
array& operator=(t a) ;
//index array or similar indirect-array as in valarray
//this class shall keeps the array's address and the index
template class ind_array
void operator=(t a) //default constructor
};//copy a part of the other array
template array::array(const array& a,int len0)
if(len0>0)
template arrayarray::operator>(t a)
//helper function
arrayfind(arraya)
int main()
{arraya(10);
for(int i=0;i<10;i++) a[i]=i;
for(i=0;i<10;i++) cout5);
for(i=0;iarrayb(10);
a[ind]=5;//this will not work on the original array
b[ind]=10.0;
//how do we support this????undefined
for(i=0;i<10;i++) cout<
乙個陣列模板類用於構造可變長度的陣列,可以使用簡單的條件取得下標,對下標組成的陣列進行操作。這個展示了c++強大的自由表述功能。
實現a[ind]=b這個操作時有點技巧的。a[ind]我們返回乙個下標陣列物件,該物件儲存了下標以及陣列的指標。這樣operator=就變成了ind_array的成員操作。類似的概念在std::valarray中廣泛得到應用。
這個還有許多可以提高的地方。比如邏輯表示式還不能連寫,比如find(a>10 && a<20)等等。
利用陣列實現乙個簡單的棧
package com.stack 用陣列實現乙個簡單的棧 方法 壓入元素 push 彈出棧頂元素 pop 棧的大小 size 棧是否為空 isempty public class arraytostack 向棧中新增元素 param item public void push item item ...
乙個簡單的Matrix實現
我們直接來看 吧 matrix.h pragma once include using namespace std 矩陣類 class matrix 下面是實現和測試的 matrix.cpp include matrix.h include include matrix matrix void ma...
LinkList的乙個簡單實現
鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...