# c++matrix using deque@deque #python easier

My own experiment https://github.com/tiger40490/repo1/blob/cpp1/cpp1/miscIVQ/spiral_FB.cpp shows

• had better default-populate with zeros. Afterwards, you can easily overwrite individual cells without bound check.
• it’s easy to insert a new row anywhere. Vector would be inefficient.
• To insert a new column, we need a simple loop

For python, ```# zero-initialize a 5-row, 8-column matrix: width, height = 8, 5 Matrix = [[0 for x in range(width)] for y in range(height)] ```

In any programming language, the underlying data structure is a uniform pile-of-horizontal-arrays, therefore it’s crucial (and tricky) to understand indexing. It’s very similar to matrix indexing — Mat[0,1] refers to first row, 2nd element.

Warning: 2d array is hard to pass in c++, based on personal experience 😦 You often need to specify the size in the receiving function declaration. Even if this is feasible, it’s unwanted legwork.

[1] Warning — The concept of “column” is mathematical (matrix) and non-existent in our implementation, therefore misleading! I will avoid any mention of it in my source code. No object no data structure for the “column”!

[2] Warning — Another confusion due to mathematics training. Better avoid Cartesian coordinates. Point(4,1) is on 2nd row, 5th item, therefore arr[2][5] — so you need to swap the subscripts.

 1st subscript 2nd subscript max subscript 44 77 height #rowCnt 45 #not an index value <== width #rowSz [1] ==> 78 #not an index value example value 1 picks 2nd row 4 picks 5th item in the row variable name rowId, whichRow subId [1] Cartesian coordinate[2] y=1 (Left index) x=4