陣列下標為負的安全解決方法及優缺點

2021-10-03 07:27:26 字數 1270 閱讀 4760

在碼農瘋狂刷題的路上,我們會碰上一些題我們需要使用下標為負數的陣列(比如作為標記陣列),我們該怎麼辦呢

我們知道,陣列其實就是乙個指標,陣列的下標代表的位置就是和這個陣列指標的相對位置,如我們定義了乙個陣列a

int a[

100]

;

此時這個陣列就是乙個指向了第乙個元素a[0]的的指標,即我們也可以直接定義*a,是乙個意思,只是這樣就不能確定a的可用大小了。

如果我們使用a[-1],顯然,這樣就是取了陣列a位址前的乙個元素,這個元素我們可能從來就沒有接觸過,所以我們如果直接給它進行標記,是非常不安全的。

我們這裡介紹三種安全的可使用類似a[-1]的方法..

map<

int,

int>a;

a[-1

]++; a[-2

]++;

優點:這是一種非常直接的辦法

缺點:執行速度慢,**可能會tle

評價:這是一種非常非常暴力的方法,也是最容易想到的辦法,如果題目不卡時間用map確實是乙個很不錯的選擇。..

const

int n=50;

int a[

100]

; a[-1

+n]=1;

//使用-1+50,即49來表示-1

a[-2

+n]=

2;

優點:相比map速度更快

缺點:容易忘記加上常量n

評價:是一種使用得很多的方法,我們在定義陣列的時候一定要定義乙個合適大小的陣列,確定常量n的值的時候也要確定乙個安全值。..

int b[

100]

;int

*a=&b[50]

;//a的安全下標為 -50~49

a[-1

]=1;

return

0;

優點:安全,高效,簡潔

陣列的坍塌及解決方法

概念 陣列的坍塌可以理解為當你把陣列前面的索引位置的那乙個資料擷取以後,從這個索引開始,後面的每乙個資料索引都會向前坍塌乙個,這個就是陣列塌陷。例項 var arr 1 2,3 4 for var i 0 i arr.length i 的執行順序 當i 0時,arr.splice 0,1 2,3,4...

IT管理中的安全痛點及解決方法

本文講的是it管理中的安全痛點及解決方法,近些年,隨著需要緩解的網路威脅層出不窮愈趨嚴重,企業安全管理員的角色也變得越來越複雜了,同時,他們自身的痛點也發生了改變。今天的安全主管們要負責整個公司網路風險的評估 溝通和管理。他們必須通告隊友具體安全漏洞的位置,然後指派相關負責人採取行動緩解威脅。安全管...

excel求和為零的解決方法

某天,有個妹子發過來資訊說是需要計算某一行的值,使用了sum函式,但始終是0,如下圖 作為程式設計師,第乙個想法就是這一列裡邊有字串,所以他的和是0,於是我就有了如下操作 全選這一行,右鍵設定單元格格式,選中數值,然後再用sum求和。這樣大多同學就好使了,但我的還是不好使。於是上網找教程,看到rep...