|
C++ |
Rust |
Python (List []) |
Go (Slice []) |
C |
Access |
v[i]
|
v[i as usize]
|
v[i]
|
v[i]
|
v[i]
|
Back |
vector v;
v.back();
|
let mut v:Vec = Vec::new();
v.push(1);
v.push(2);
if let Some(l) = v.last() {
prinln!("last=", l);
}
|
|
|
clear |
v.clear();
|
v.clear();
|
|
|
Create/Initialize |
1D |
//vector v(size, init_value);
v.assign(3,10);//10 10 10
|
2D |
using vvI = vector<vector<int>>;
vvI vec = {
{1,2,3},
{4,5,6}
};
OR
//vec[row][col]
vvI v(row, vector<int>(col,0));
|
|
1D |
let mut v:Vec <String> = Vec::new();
let mut v:Vec <i32> = vec![];
|
Initialize |
let v2: Vec <i32> = vec![1,2,3];
let mut v = vec![0; 5]; //size=5, init value=0
let v: Vec <i32> = [1,2,3].to_vec();
|
2D |
let mut 2d_vec: Vec<Vec<i32>> = Vec::new();
// rows x cols matrix
let mut 2d_vec: Vec<Vec<i32>> =
vec![vec![0; cols]; rows];
/*
0 1 0 0
1 1 1 0
*/
let v: Vec> = vec![
vec![0, 1, 0, 0],
vec![1, 1, 1, 0],
];
|
|
######### 1 D
a = [] #Empty
a = [False] * (5) #Filled
######### 2 D
out = []
or
out = [[0 for _ in range(cols)] for _ in range(rows)]
|
range()
////// 1D
package main
import (
"fmt"
)
func main() {
a := make([]int, 5)
for i:=0;i <5; i++ {
a[i] = i+3
}
for index, val := range(a) {
fmt.Println (index, val)
}
}
$ go build test.go
$ ./test
index value
0 3
1 4
2 5
3 6
4 7
/////// 2D
a := make([][]uint8, cols)
for i := range a {
a[i] = make([]uint8, rows)
}
|
1D |
int a[10];
OR
int* a = (int*) malloc(sizeof(int)*10);
memset(a, 0, sizeof(int)*10));
free(a);
|
2D |
int a[3][4];
OR
//Using pointer to a pointer
int r=3, c=4;
int** arr = (int**)malloc(r * sizeof(int*));
for (int i=0;i<r;i++)
arr[i] = (int*)malloc(c * sizeof(int));
for (int i = 0; i < r; i++)
free(arr[i]);
free(arr);
|
|
Delete |
- 1 element v.erase(v.begin()+position-1);
- Range v.erase(v.begin()+position1, v.begin()position2);
- All v.clear();
|
//pop(&mut self) -> Option
if let Some(a) = vec.pop() {
}
|
Last Element element = list.pop() |
Find |
string word = "abcde"; char ch = 'd';
auto it = find(word.begin(), word.end(), ch);
|
// Find returns a index(usize)
let index = match word.find(ch) {
Some (a)=>a,
None => {
0
}
};
|
|
|
Max |
INT_MAX |
let max_int: i32 = i32::MAX;
let min_int: i32 = i32::MIN;
let maxi = std::cmp::max(a,b);
|
import sys
sys.max_int //INT_MAX
min_int = -sys.maxsize - 1
|
pop Back. Remove last |
vec.pop_back();
|
// Pop removes and returns last
if let Some(last) = st.pop() {
println!("last element", last);
}
|
|
push_back() |
//push_back(): allocates element
//somewhere else then insert
//into vector at back.
v.push_back(11)
//emplace():also inserts at back
//it But constructs elements inside the stl only.
//Adv: Does in place insertion
//avoids unneccessary copy
v.emplace_back(11)
|
vec.push(str.clone()) |
list.append(4) |
Insert |
vec.insert(v.begin() + 2, 7) |
|
|
vec[i] = ele
|
Iterate, Traverse |
vector<int> v;
for_each(v.begin(),v.end(),[&](int ele){
});
// next element
for (auto it=v.begin(); it!=v.end()-1; ++it) {
auto next = std::next(it);
out = (*it)*(*next);
}
// Reversing the string
void reverseString(vector& s) {
for (auto it=s.begin(),itr = s.end() - 1; //Multiple Initializations
it < itr; //Check
++it, --itr //Multiple inc,dec
)
swap(*it, *itr);
}
|
fun(nums: Vec<i32>) {
for i in nums.iter().skip(1) {//skip 1st 2 element
println!("{}", *i);
}
}
for i in 1..10 {
}
// Closure or Lambda
let s:String = "010101";
s.chars().for_each(|ele| {
if ele == '1' {
}
});
|
for c in s[1:-1]:
print(c)
j=1
#range(start, stop, step)
for i in range(0,n):
print(vec[i][j])
# Reverse Iterate
for i in range(len(list) - 1,
-1, -1):
print(list[i])
|
for i := 0; i < len(nums)-1; i++ {
sum += int64(nums[i])
}
OR
for index, n := range nums {
sum += int64(n)
}
|
Last element |
vec.back() |
if Some(l) = vec.last() |
|
Reverse |
reverse(str.begin(), str.end());
|
fn reverse_string_till_index(text: &str, index: usize) -> String {
// Take characters up to index
let mut chars: Vec = text.chars().take(index + 1).collect();
// Reverse the characters
chars.reverse();
// Convert the reversed characters back into a string
chars.into_iter().collect()
}
|
|
|
Slice |
|
|
last 3 print(a[-3:]) 1st to last list[1:] |
Size |
vec.size() |
vec.len() |
len(vec) |
len(arr) |
Sort |
sort(a.begin(), a.end())
|
vec.sort();
|
Simple |
list.sort()
|
Custom |
def fun(s):
return s[1]
sorted(list, key=fun)
|
|
v := []int
sort.Ints(v)
// sort [][]
v = :[][]
sort.Slice(v, func(i, j int) bool {
return v[i][0] < v[j][0]
})
|
int cmpfunc(const void * a, const void * b) {
return (*(int*)a - *(int*)b);
}
qsort(nums, numsSize, sizeof(int), cmpfunc);
|
Swap |
swap(arr[i], arr[j]) |
std::mem::swap(&mut a, &mut b); |
lst[i], lst[j] = lst[j], lst[i] |
a,b = b,a |
Sum |
for(auto&i:v)
sum += i;
OR
// C++17
sum = std::accumulate(v.begin(), v.end());
|
|
|
|
Ternary Operator |
int a = (x == '0') ? 1 : 0;
|
|
a = 1 if x == '0' else 0
|
|