0% found this document useful (0 votes)
125 views5 pages

C++ Notes For STL

This document contains summaries of 9 topics related to C++ and the STL: 1) How to scan a string with spaces using getline() and flush the newline character. 2) Two ways to add a custom comparator to sort() to sort strings in largest to smallest order. 3) How to declare and initialize a vector using its constructor. 4) An overview of the deque container and a LeetCode problem example involving deques. 5) An overview of lists in the STL and how they allow non-contiguous memory allocation. 6) A link about unordered_sets in the STL. 7) A link about sets in the STL and insertion/deletion.

Uploaded by

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

C++ Notes For STL

This document contains summaries of 9 topics related to C++ and the STL: 1) How to scan a string with spaces using getline() and flush the newline character. 2) Two ways to add a custom comparator to sort() to sort strings in largest to smallest order. 3) How to declare and initialize a vector using its constructor. 4) An overview of the deque container and a LeetCode problem example involving deques. 5) An overview of lists in the STL and how they allow non-contiguous memory allocation. 6) A link about unordered_sets in the STL. 7) A link about sets in the STL and insertion/deletion.

Uploaded by

castel N
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

----------------------INDEX---------------------

1> Scaning string with spaces


2> Ways of adding cusotm comparator in c++ STL sort
3> Way of declearing and initializing STL vector using constructor
4> Deque in STL
5> List in STL
6> unordered_set in STL
7> set in STL
8> unordered_map in STL
9> Rounding a number without ANY library function

-------------------------------------------------

1> Scaning string with spaces

=>

stirng temp;
getline(cin,temp);
https://www.geeksforgeeks.org/getline-string-c/

Now there is one problem the getline consumes the \n or ENTER key also
so if the sequence is
int n;
cin>>n;
getline(cin,temp);
then the ENTER pressed after cin>>n will be consuemd by the getline
so remember to flush the \n or ENTER .
i.e
*****
int test;
cin>>test;
string test,flush;
getline(cin,flush);
getline(cin,test);

----------------------------------------------------------------------------

2> Ways of adding cusotm comparator in c++ STL sort

=>
QUESTION = > https://leetcode.com/problems/largest-number/
METHOD 1:
class Solution {
public:
static bool comp(int n1,int n2){

string s1 = to_string(n1);
string s2 = to_string(n2);
return (s1+s2> s2+s1);
}
string largestNumber(vector<int>& nums) {

int n =nums.size();
sort(nums.begin(),nums.end(),comp);
string result="";
for(int i=0;i<n;i++){
result+=to_string(nums[i]);
}
if(result[0]=='0'){
return "0";
}
return result;

}
};

METHOD 2:
class Solution {
struct comp {
bool operator() (int a, int b) {
string comb1 = to_string(a) + to_string(b);
string comb2 = to_string(b) + to_string(a);
return comb1 > comb2;
}
} mycomp;
public:
string largestNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), mycomp);
if (nums[0] == 0) return "0";
string res = "";
for (auto num : nums) {
res = res + to_string(num);
}
return res;
}
};

----------------------------------------------------------------------------

3> Way of declearing and initializing STL vector using constructor


=>
* int numIslands(vector<vector<char>>& grid) {
if (grid.empty()) return 0;

int m = grid.size();
int n = grid[0].size();
vector<vector<bool>>visited(m, vector<bool>(n, false));

* int V = graph.size();

vector<int>res;
vector<int>dp(V, 0);

----------------------------------------------------------------------------

4> Deque in STL


=>

https://www.geeksforgeeks.org/deque-cpp-stl/

Example problem for it


https://leetcode.com/problems/sliding-window-maximum/

----------------------------------------------------------------------------

5> List in STL


=>

List in C++ Standard Template Library (STL)

Overview:->

sequence containers that allow non-contiguous memory allocation. As compared to


vector, list has slow traversal, but once a position has been found, insertion and
deletion are quick. Normally, when we say a List, we talk about doubly linked list.

----------------------------------------------------------------------------

6> unordered_set

=>

https://www.geeksforgeeks.org/unordered_set-in-cpp-stl/
----------------------------------------------------------------------------

7> set

=>

https://www.geeksforgeeks.org/insertion-deletion-stl-set-c/

----------------------------------------------------------------------------

8> unordered_map
=>

https://www.geeksforgeeks.org/unordered_map-in-cpp-stl/

----------------------------------------------------------------------------

----------------------------------------------------------------------------

9> Rounding a number without ANY library function


=>
https://www.codechef.com/APRIL21C/problems/BOLT
first we hand to calculate the speed , then divide 100/speed to get the time
and then round that time to 2 decimal palces , then compare it with 9.58

To do this simply first multiply t by 100 and round it.


the round function produces an integer so we again divide it by 100
we now have 2 decimal palced rounded number , same can be generalized for
rounding to n decimal palces.

One more problem here is on compairing 9.58<9.58 was giving true i think this is
just float point comparision problem, i kept it integer and compared it with 958

float k1,k2,k3,v,t;
cin>>k1>>k2>>k3>>v;
v = v*k1*k2*k3;
t = 100/v;
t = round(t*100);
t = t/100;
t = t*100;
cout<<t<<endl;
if(t < 958){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}

----------------------------------------------------------------------------

You might also like