0% found this document useful (0 votes)
3 views10 pages

C++ Data Structures and Algorithms Guide

yo

Uploaded by

Ujjwal Kesari
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views10 pages

C++ Data Structures and Algorithms Guide

yo

Uploaded by

Ujjwal Kesari
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Vector References

// Vector References
vector<int> v, v1(5), v2(5,10), v3={1,2,3}, v4(v3), v5([Link](), [Link]());
v.push_back(1); v.pop_back(); [Link](); [Link](); [Link]();
[Link](10,1); [Link](); [Link](); v[2]; [Link](2);
for(auto x:v) cout<<x; for(auto it=[Link](); it!=[Link](); it++) cout<<*it;
sort([Link](), [Link]()); reverse([Link](), [Link]());
auto it=find([Link](), [Link](),5);
[Link]([Link]()+2); [Link]([Link]()+1,99);
[Link](v2); [Link](5,100);
[Link](unique([Link](),[Link]()), [Link]());
int mn=*min_element([Link](),[Link]()), mx=*max_element([Link](),[Link]());
vector<vector<int>> grid(3, vector<int>(4,0));
priority_queue<int> maxH; priority_queue<int,vector<int>,greater<int>> minH;
rotate([Link](),[Link]()+2,[Link]());
next_permutation([Link](),[Link]()); prev_permutation([Link](),[Link]());
String References
// String References
string s="hello"; [Link](); [Link](); [Link]();
s.push_back('a'); s.pop_back(); s+= "world";
[Link](1,3); [Link]("lo"); [Link]("hello");
reverse([Link](), [Link]()); sort([Link](), [Link]());
stoi("123"); stoll("12345"); to_string(123);
Set / Multiset / Unordered Set References
// Set / Multiset / Unordered Set References
set<int> s; [Link](10); [Link](10);
if([Link](10)!=[Link]()) cout<<"found";
[Link](10); auto it=s.lower_bound(5); auto jt=s.upper_bound(5);
multiset<int> ms; [Link](10); [Link]([Link](10));
unordered_set<int> us; [Link](5);
Map / Multimap / Unordered Map References
// Map / Multimap / Unordered Map References
map<int,int> mp; mp[1]=10; [Link]({2,20});
[Link](1); if([Link](2)) cout<<mp[2];
for(auto [k,v]:mp) cout<<k<<" "<<v;
unordered_map<string,int> ump; ump["abc"]=5;
Deque / Queue / Stack References
// Deque / Queue / Stack References
deque<int> dq; dq.push_back(1); dq.push_front(2); dq.pop_back(); dq.pop_front();
queue<int> q; [Link](1); [Link](); [Link]();
stack<int> st; [Link](5); [Link](); [Link]();
Algorithms References
// Algorithms References
sort([Link](),[Link]()); stable_sort([Link](),[Link]());
partial_sort([Link](),[Link]()+k,[Link]());
reverse([Link](),[Link]()); rotate([Link](),[Link]()+k,[Link]());
accumulate([Link](),[Link](),0);
count([Link](),[Link](),x);
*max_element([Link](),[Link]()); *min_element([Link](),[Link]());
lower_bound([Link](),[Link](),x);
upper_bound([Link](),[Link](),x);
binary_search([Link](),[Link](),x);
next_permutation([Link](),[Link]());
Math / Number Theory References
// Math / Number Theory References
__gcd(a,b); lcm(a,b); // C++17
int mod=1e9+7;
auto modpow=[](long long a,long long b,long long m){
long long res=1; while(b){ if(b&1) res=res*a%m; a=a*a%m; b>>=1;} return res; };
vector<int> prime(n+1,1);
for(int i=2;i*i<=n;i++) if(prime[i]) for(int j=i*i;j<=n;j+=i) prime[j]=0;
Bit Manipulation References
// Bit Manipulation References
int x=29; // 11101
__builtin_popcount(x); __builtin_ctz(x); __builtin_clz(x);
(x&(1<<k))?1:0; // check kth bit
x|=(1<<k); // set kth bit
x&=~(1<<k); // unset kth bit
x^=(1<<k); // toggle kth bit
Pair & Tuple References
// Pair & Tuple References
pair<int,int> p={1,2}; [Link]; [Link];
vector<pair<int,int>> vp; sort([Link](),[Link]());
tuple<int,int,string> t={1,2,"hi"}; auto [a,b,c]=t;
Graph / DSU References
// Graph / DSU References
int n; vector<vector<int>> adj(n);
for(int i=0;i<n;i++){int u,v; cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u);}
vector<int> vis(n,0);
function<void(int)> dfs=[&](int u){vis[u]=1; for(int v:adj[u]) if(!vis[v]) dfs(v);};
queue<int> q; [Link](0); vis[0]=1; while(![Link]()){int u=[Link]();[Link]();
for(int v:adj[u]) if(!vis[v]){vis[v]=1; [Link](v);}}
struct DSU{vector<int> p,sz; DSU(int n):p(n),sz(n,1){iota([Link](),[Link](),0);}
int find(int x){return p[x]==x?x:p[x]=find(p[x]);}
bool unite(int a,int b){a=find(a);b=find(b); if(a==b) return 0; if(sz[a]<sz[b]) swap(a,b);
p[b]=a; sz[a]+=sz[b]; return 1;}};

You might also like