思路
1.新建一個vector的vector
2.先把空間開出來,然后再把里面的值給一個個修改
開空間的手段:new、構造函數、reserve、resize
因為我們之后要修改里面的數據,這就意味著我們需要去讀取這個數據并修改,
如果用reserve的話,我們就僅僅是把空間給開出來了,但是里面是沒辦法訪問的,因為我們此時的size為0,相當于此時的數組只有0個數據,我們就不能修改 arr[ 1 ] 等值;所以我們需要能夠讀取
當我們用resize的時候,相當于我們做了int arr[ 10 ];此時里面的是個元素雖然是隨機值,但是起碼是可以修改了
resize:開n個空間,可以放初始值
構造函數:第二個重載支持創建多個vector和初始化
這樣也是可以的,也能做到初始化后的隨意修改,以下內容我們用的是resize,結尾有構造函數的實現方式
3.我們要開多大的空間呢?
對于這個二維數組來說,我們要開的空間是能夠放下多少行一維數組,而一維數組要開的空間是等差遞增的
所以:
行:對于vector<vector<int>>,我們開numRows個空間放numRows個vector<int>數組
列:對于vector<int>,我們第一行開一個,第二行開兩個,以此類推?
因為楊輝三角第一個和最后一個是1,所以可以在這里順便處理初始化的值,但是這里并不方便處理其他位置的值,
4.修改的是每個vector<int>的值
因為我們前面已經把那些值為1的位置給賦值了,所以現在就可以直接把那些是初始值的位置給按照楊輝三角的規則來修改值了(就是因為我們用的是resize,所以我們現在可以隨便進行修改值)
5.返回對應的值
,要求我們返回那個二維數組,所以我們就直接返回
最終整合:
用resize來解決的
用構造函數來解決的
(以下的注釋:原本打算把swap的地方直接用匿名對象作為函數參數,但是swap的交換參數是vector&,引用一個生命周期)