Skip to main content

C++ Day 39

  C++ Day 39 STL Containers (Deep Understanding & Real Usage) Till now, you already know arrays, vectors, loops, and STL algorithms. Today, we go one step deeper and understand STL containers , which are the backbone of modern C++ programming. In real projects and competitive coding, choice of container matters a lot. 1. What are STL Containers? STL containers are data structures provided by C++ to store data efficiently. They handle: memory management resizing element access performance optimization You focus on logic , not memory handling. 2. Categories of STL Containers STL containers are mainly divided into: Sequence Containers Associative Containers Unordered Containers Container Adapters 3. Sequence Containers These store data in sequence . 3.1 Vector Most used container in C++. vector< int > v; Key Features: Dynamic size Contiguous memory Fast random access Slower insertion in middle Example: v. push_...

C++ Day 33

  C++ Day 33: Smart Pointers & Memory Management

๐Ÿ”น 1. wherefore forward pointers

in c++ hand-operated green / cancel is error-prone:


memory leaks ๐Ÿง 


double deletes ❌


dangling pointers ๐Ÿ’ฅ


smart pointers care store mechanically exploitation raii (Supply skill is initialization)


๐Ÿ”น ii. Types of Smart Pointers in C++

✅ std::unique_ptr

Sole ownership of a Supply.


Cannot be copied.


Automatically deletes the Supply when it goes out of scope.


cpp

Copy

Edit

#include 


unique_ptr ptr1 = make_unique(10);

cout << *ptr1 << endl; // 10

You can transfer ownership:


cpp

Copy

Edit

unique_ptr ptr2 = move(ptr1);

✅ std::shared_ptr

Shared ownership multiple shared_ptrs can point to the same object.


Uses reference counting to track how many owners.


cpp

Copy

Edit

shared_ptr p1 = make_shared(100);

shared_ptr p2 = p1;  // Reference count = 2

When count goes to 0 memory is released.


✅ std::weak_ptr

Non-owning reference to a shared_ptr-managed object.


Used to break cyclic references (e.g. in graphs or linked structures).


cpp

Copy

Edit

shared_ptr sp = make_shared(50);

weak_ptr wp = sp;


if (auto temp = wp.lock()) {

    cout << *temp << endl;

}

๐Ÿ”น 3. bespoke deleters

you get delineate however amp forward arrow need cancel its object


cpp

copy

edit

unique_ptr file(fopen("Checktxt" "r") &fclose);

๐Ÿ”น cardinal. Common Mistakes

Using raw pointers where smart pointers are better.


Creating cyclic references with shared_ptr.


Forgetting move() with unique_ptr.


๐Ÿ”น 5. compare table

Characteristic unique_ptr shared_ptr weak_ptr

ownership exclusive shared non-owning

copyable

reference cnt ✅ (uses weak)

use case single owner multiple use avoid cycles


๐Ÿงช do task:

Make amp family hold and care amp active range of hold objects exploitation shared_ptr. Add a method to show the reference count of a particular Book.


✅ Summary:

Smart pointers = safer dynamic memory


Use make_unique / make_shared instead of new


Prefer unique_ptr by default shared_ptr when needed

Comments

Popular posts from this blog

C++ Day 35

  C++ Day 34: Layout Layouts (Part 2) We’ll cover: Constructer Layout Adjuster Layout Decorator Layout practise Task ๐Ÿ”น 1. developer form (creational) used to make compound objects measure away step ✅ employ case: you need to form associate in nursing aim (like amp pizza pie calculator house) with elective parameters example: cpp copy edit class calculator {     train Methodor gpu ram; public:     family developer {         train Methodor gpu ram;     public:         developer setcpu(string c) { Methodor = c; take *this; }         developer setgpu(string g) { gpu = g; take *this; }         developer setram(string r) { run = r; take *this; }         calculator Construct() {             take Calculater(cpu gpu ram);         }     };     Calculater(string snow train m train r) : cpu(c) gp...

CSES Increasing Subsequence solution

 You are given an array containing  n n n integers. Your task is to determine the longest increasing subsequence in the array, i.e., the longest subsequence where every element is larger than the previous one. A subsequence is a sequence that can be derived from the array by deleting some elements without changing the order of the remaining elements. Input The first line contains an integer n n n : the size of the array. After this there are n n n integers x 1 , x 2 , … , x n x_1,x_2,\ldots,x_n x 1 ​ , x 2 ​ , … , x n ​ : the contents of the array. Output Print the length of the longest increasing subsequence. Constraints 1 ≤ n ≤ 2 ⋅ 1 0 5 1 \le n \le 2 \cdot 10^5 1 ≤ n ≤ 2 ⋅ 1 0 5 1 ≤ x i ≤ 1 0 9 1 \le x_i \le 10^9 1 ≤ x i ​ ≤ 1 0 9 Example Input: 8 7 3 5 3 6 2 9 8 Output: 4 #include < bits / stdc ++. h > using namespace std ; void solve (){ int n ; cin >> n ; vector <int> arr ( n ); for ( int i = 0 ; i < n ; i ++)...