我所有的operator的知識都是從我的學長spark給我發的一段**裡頭猜出來的
結構體是使用struct定義的
例如
struct room
;
這樣我們就有了room型別的資料結構
在該結構當中,含有三個變數a,b,c
使用room定義新的變數
room t;
cout《此處的定義和int、long long之類的定義是一樣的
同時,當我們想呼叫定義的t的a變數時,通過呼叫t.a即可
呼叫陣列也是相同的用法,相當於就是在d前增加了乙個字首t.來區分其他room型別的資料當中的d陣列
我們也可以定義room型別的陣列
room t[100]
cout《在這種程度上來講,結構體僅僅是多了幾個變數,同時也增加了幾個字尾來呼叫這些變數
我們重新定義一下room型別的資料結構
這次我們將它定義得正式一點
我們希望room能夠表示某個房間當中的人,空位,人數,以及輸出它內部有哪些人,踢出第x個人,清空資料
struct room
void kick(int x)
}
這樣定義,我們的目的就達到了
比如,我們定義房間a當中有十個空位、三個人1,2,3
那麼
room a
;a.seat=10
;a.count=3
;a.people[1]=1
;a.people[2]=2
;a.people[3]=3
;
這樣定義就完成了
當我們想知道每個座位上的人,踢掉第2個,然後將這些人清空
a.out();
a.kick(2);
a.clear();
此處的使用與queue的push()、pop()的呼叫方式類似
以上內容均為瞎逼胡扯
下面講最厲害的過載
operator的作用就是重新定義某種運算子
比如,重新定義矩陣的加法
struct matrix
operator +(const int x)//把當前矩陣每個位子都加上數字x
operator +(const matrix&y)//把當前矩陣和y矩陣相加
}
上述操作定義了martix型別與int和matrix相加的操作
operator後的符號是過載(重新定義)的符號,此處為'+'
而符號後面的括號內的型別是相加的型別
如 operator+(const int x)
定義的就是matrix+int的操作
const使x不可更改(雖然不知道有什麼用,但是用它就是了)
而 operator+(const matrix & y)
當中的&符號,我也不知道有啥用
但是好像操作的物件是同種型別,如matrix+matrix時就要用&
而在操作時還要新宣告乙個maxtrix c=matrix()的目的是
在計算三個matrix x,y,z
x=y+z時,如果不定義c,那麼y+z就會使得y的值被更改
我們用c.mat[x][y]=mat[x][y]+y.mat[x][y]
就可以避免原矩陣的數字被更改
而使用matrix()來初始化,純粹是為了表示這個資料型別是有初始化的操作的
因為我們無法在定義mat的時候直接賦處置,所以我們可以使用matrix()來完成賦初值
另外,在呼叫自身的mat時,是不需要加上字首的
但是呼叫加上的矩陣y的mat時,要加上字首->y.mat
差不多就是這些了吧…有不懂的可以提問,雖然我也不清楚很具體的知識
但是還是可以一起找找答案
並且我知道這種部落格寫出來很多東西可能也只有我看得懂
所以看了之後有很多疑惑的地方很正常,提問就好了
C 結構體重載運算子
聽說這個東西有很多種寫法什麼的,來不及了 要退役了 先整乙個之前用到的,可能用到的頻率比較高的東西上來。struct node bool operator const node a,const node b 這種寫法是當時要定義乙個什麼 mapint vis 然後 map 裡面是紅黑樹 所以 map...
電影節 貪心,結構體重載,sort
總時間限制 1000ms 記憶體限制 65536kb 描述大學生電影節在北大舉辦 這天,在北大各地放了多部電影,給定每部電影的放映時間區間,區間重疊的電影不可能同時看 端點可以重合 問李雷最多可以看多少部電影。輸入多組資料。每組資料開頭是n n 100 表示共n場電影。接下來n行,每行兩個整數 0到...
函式過載的簡單介紹
首先函式過載的目的就是實現用相同的函式名根據不同的引數實現不同的功能。形參的不同有兩方面,一是形參的型別不同,二是形參的個數不同,對於過載函式的選擇呼叫也只能通過這兩個方面來區分。但是在使用有預設形參值的函式過載形式時要注意防止二義性,舉個栗子說明一下 void a int a,int b 1 vo...