____ __ ____ _
/ ___| _ _ / / / ___| ___ | | __ _ _ __ __ _
| | _| |_ _| |_ / / | | _ / _ \| |/ _` | '_ \ / _` |
| |__|_ _|_ _| / / | |_| | (_) | | (_| | | | | (_| |
\____||_| |_| /_/ \____|\___/|_|\__,_|_| |_|\__, |
|___/
⚡ C++ & Go Cheatsheet (Interview / NeetCode)
This is a syntax recall cheatsheet, not a tutorial.
Goal: unblock yourself fast under pressure.
C++
Vector
- vector
v; - v.push_back(x);
- v.pop_back();
- v[i]
- v.size()
- v.empty()
Iterate Vector
- for (int i = 0; i < v.size(); i++) {}
- for (int x : v) {}
- for (int &x : v) {} // modify elements
Sort
- sort(v.begin(), v.end())
- sort(v.begin(), v.end(), greater
())
Pair
- pair<int,int> p = {a, b}
- p.first
- p.second
Vector of Pairs
- vector<pair<int,int» vp
- sort(vp.begin(), vp.end())
- sort(vp.begin(), vp.end(), { return a.second < b.second; })
Map (Hash Map)
- unordered_map<int,int> mp
- mp[key]++
- mp[key] = value
- mp.find(key) != mp.end()
- mp.erase(key)
- mp.size()
Iterate Map
- for (auto &p : mp) { p.first p.second }
Set
- unordered_set
s - s.insert(x)
- s.count(x)
- s.erase(x)
String
- string s
- s.size()
- s[i]
- s.substr(start, length)
String → Frequency Map
- unordered_map<char,int> freq
- for (char c : s) freq[c]++
Stack
- stack
st - st.push(x)
- st.top()
- st.pop()
- st.empty()
Queue
- queue
q - q.push(x)
- q.front()
- q.pop()
Priority Queue (Max Heap)
- priority_queue
pq
Priority Queue (Min Heap)
- priority_queue<int, vector
, greater > pq
GO
Slice
- var a []int
- a = append(a, x)
- a[i]
- len(a)
Iterate Slice
- for i := 0; i < len(a); i++ {}
- for _, v := range a {}
Sort
- sort.Ints(a)
Map
- m := make(map[int]int)
- m[k]++
- m[k] = v
- v, ok := m[k]
- delete(m, k)
- len(m)
Iterate Map
- for k, v := range m {}
Set (using map)
- seen := make(map[int]bool)
- seen[x] = true
- if seen[x] {}
Set (zero-size value)
- seen := make(map[int]struct{})
- seen[x] = struct{}{}
- _, ok := seen[x]
String
- s := “abc”
- len(s)
- s[i] // byte
String → Frequency Map
- freq := make(map[byte]int)
- for i := 0; i < len(s); i++ { freq[s[i]]++ }
Rune-safe String Loop
- for _, r := range s {}
Stack (slice)
- st := []int{}
- st = append(st, x)
- top := st[len(st)-1]
- st = st[:len(st)-1]
Queue (slice)
- q := []int{}
- q = append(q, x)
- front := q[0]
- q = q[1:]
=====================
PATTERNS
=====================
- Duplicate check → hash map / set
- Frequency counting → map
- Anagram → frequency maps or sliding window
- Top K → heap or partial sort
- Sliding window → two pointers + map
- Need order → sort
- Need memory → map / set