乙個簡單的實現matlab陣列下標操作的類實現

2021-05-27 10:06:50 字數 1480 閱讀 2103

#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 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...