Learn C++ STL

lesson ā§§ / ⧝ ¡ vector: āϝ⧇ container-āϟāĻž āϏāĻŦāĻžāϰ āφāϗ⧇ āĻšāĻžāϤ⧇ āφāϏ⧇

Module ⧍ ¡ vector: āϝ⧇ container-āϟāĻž āϏāĻŦāĻžāϰ āφāϗ⧇ āĻšāĻžāϤ⧇ āφāϏ⧇

vector: āϝ⧇ āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āύāĻŋāĻœā§‡ āύāĻŋāĻœā§‡ āĻŦāĻžāĻĄāĻŧ⧇

FreeāĻĒāĻĄāĻŧāĻž

āĻāχ lesson-āĻ āϝāĻž āĻļāĻŋāĻ–āĻŦ⧇

  • āĻāĻ•āϟāĻž vector declare āĻ•āϰ⧇ push_back āĻĻāĻŋāϝāĻŧ⧇ āĻ­āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āϤāĻžāϰāĻĒāϰ index āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻž range-for āĻĻāĻŋāϝāĻŧ⧇ āφāĻŦāĻžāϰ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • Size āφāϰ capacity āϕ⧀, āĻŦ⧁āĻāĻŋāϝāĻŧ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ push_back āϜāĻžāϝāĻŧāĻ—āĻž āύāĻž āĻĒ⧇āϞ⧇ vector āϕ⧀ āĻ•āϰ⧇, āϏ⧇āϟāĻžāĻ“ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • āύāϤ⧁āύāĻĻ⧇āϰ āĻĻ⧁āχāϟāĻž āĻšā§‡āύāĻž āĻĢāĻžāρāĻĻ, v[v.size()] āφāϰ āĻ–āĻžāϞāĻŋ vector-āĻ v.size() - 1, āĻ“āĻĻ⧇āϰ āφāϏāϞ output āĻĻ⧇āϖ⧇āχ āϚāĻŋāύāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

Amara āĻ•ā§āϞāĻžāϏ⧇āϰ āύāĻŽā§āĻŦāϰāϗ⧁āϞ⧋ āĻāĻ•āϟāĻž program-āĻ āϤ⧁āϞāϛ⧇, āĻāĻ• āϞāĻžāχāύ⧇ āĻāĻ•āϟāĻž āĻ•āϰ⧇, āĻ–āĻžāϤāĻžāϰ āĻ¸ā§āϤ⧂āĻĒ āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āĻ–āĻžāϤāĻž āĻ•āϝāĻŧāϟāĻž, āĻ“ āϜāĻžāύ⧇ āύāĻžāĨ¤ C track-āĻāϰ Module 14-āĻ āĻāχ āĻ•āĻžāĻœā§‡ āϞ⧇āϗ⧇āĻ›āĻŋāϞ malloc, realloc, āĻāĻ•āϟāĻž capacity variable, āφāϰ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻŽāĻžāύ⧁āώ⧇āϰ āĻ•āĻĒāĻžāϞ⧇ āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻž bugāĨ¤ C++-āĻ āĻĒ⧁āϰ⧋ āĻŦā§āϝāĻžāĻĒāĻžāϰāϟāĻž loop-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻž āϞāĻžāχāύ: marks.push_back(x);āĨ¤ āĻāχ lesson āĻ“āχ āϞāĻžāχāύāϟāĻž āĻĻ⧇āĻ–āĻžāĻŦ⧇, āφāϰ āϤ⧋āĻŽāĻžāϰ āĻšā§‹āϖ⧇āϰ āφāĻĄāĻŧāĻžāϞ⧇ āĻ“ āϕ⧀ āĻ•āϰ⧇, āϏ⧇āϟāĻžāĻ“āĨ¤

āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻž: āĻ•āϝāĻŧāϟāĻž āφāϏāĻŦ⧇, āϜāĻžāύāĻž āύ⧇āχ

C-āĻāϰ array-āĻāϰ size āĻ āĻŋāĻ• āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ program āϚāϞāĻžāϰ āφāϗ⧇āχāĨ¤ Input āϝāĻĻāĻŋ array-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āϞāĻŽā§āĻŦāĻž āĻšāϝāĻŧ, array overflow āĻ•āϰ⧇āĨ¤ āϛ⧋āϟ āĻšāϞ⧇ āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āĻ…āĻ•āĻžāϰāϪ⧇ āĻŦāϏ⧇ āĻĨāĻžāϕ⧇āĨ¤ āĻāϰ C++ āωāĻ¤ā§āϤāϰ āĻšāϞ⧋ vector: array-āĻāϰ āĻŽāϤ⧋āχ āĻāĻ•āχ type-āĻāϰ āĻāĻ• āϏāĻžāϰāĻŋ āĻŦāĻžāĻ•ā§āϏ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻļ⧇āώ⧇ āĻ•āĻŋāϛ⧁ āϝ⧋āĻ— āĻ•āϰāϞ⧇ āύāĻŋāĻœā§‡ āύāĻŋāĻœā§‡āχ āĻŦāĻĄāĻŧ āĻšāϝāĻŧāĨ¤ āĻāϟāĻž āĻĨāĻžāϕ⧇ <vector> header-āĻ, āφāϰ āĻāϰ āĻĒ⧁āϰ⧋ āύāĻžāĻŽ std::vectorāĨ¤

āĻāχ āĻšāϞ⧋ Amara-āϰ programāĨ¤ Input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āύāĻŽā§āĻŦāϰ āĻĒāĻĄāĻŧ⧇, āϤāĻžāϰāĻĒāϰ āĻŦāϞ⧇ āĻ•āϝāĻŧāϟāĻž āĻĒāĻĄāĻŧāϞ āφāϰ āĻ“āĻĻ⧇āϰ āĻ—āĻĄāĻŧ āĻ•āϤāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> marks;
    int x;
    while (cin >> x) {
        marks.push_back(x);
    }

    long long total = 0;
    for (int m : marks) {
        total += m;
    }
    cout << marks.size() << " marks\n";
    cout << "average " << (double)total / marks.size() << '\n';
    return 0;
}
5 marks
average 71.2

āĻ“āχ output-āϟāĻž input 70 85 62 91 48-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻĒ⧁āϰ⧋ program-āĻ āϕ⧋āĻĨāĻžāĻ“ āϕ⧋āύ⧋ size āϞ⧇āĻ–āĻž āύ⧇āχāĨ¤ Module 1-āĻ āϝ⧇āĻŽāύ āĻĻ⧇āϖ⧇āĻ›, input āĻļ⧇āώ āĻšāϞ⧇āχ while (cin >> x) āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž push_back āĻļ⧇āώ⧇ āĻāĻ•āϟāĻž āĻ•āϰ⧇ āύāĻŽā§āĻŦāϰ āϜ⧁āĻĄāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϤāĻžāχ vector āĻ āĻŋāĻ• input-āĻāϰ āϏāĻŽāĻžāύ āϞāĻŽā§āĻŦāĻž āĻšāϝāĻŧāĨ¤

Zara āϏāĻŦāϏāĻŽāϝāĻŧ āϝāĻž āφāϗ⧇ āĻ•āϰ⧇, āĻāĻŦāĻžāϰāĻ“ āϤāĻžāχ āĻ•āϰ⧇: āĻ–āĻžāϞāĻŋ input āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞāĻžāϝāĻŧāĨ¤ Program print āĻ•āϰ⧇ 0 marks, āϤāĻžāϰāĻĒāϰ average -nan, āĻ•āĻžāϰāĻŖ 0.0 / 0 āϕ⧋āύ⧋ āϏāĻ‚āĻ–ā§āϝāĻžāχ āύāĻžāĨ¤ āύāĻŋāĻšā§‡āϰ Example 2 āφāϰ 3 āĻ­āĻžāĻ— āĻ•āϰāĻžāϰ āĻŦāĻž āĻĒāĻĄāĻŧāĻžāϰ āφāϗ⧇ āĻĻ⧇āϖ⧇ āύ⧇āϝāĻŧ, vector āĻ–āĻžāϞāĻŋ āĻ•āĻŋ āύāĻžāĨ¤

āĻāĻ• āϏāĻžāϰāĻŋ āĻŦāĻžāĻ•ā§āϏ, āϝ⧇āϟāĻž āύāĻŋāĻœā§‡ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ

Vector āĻ“āϰ element-āϗ⧁āϞ⧋ āϰāĻžāϖ⧇ memory-āϰ āĻāĻ•āϟāĻžāχ block-āĻ, āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻ āĻŋāĻ• C array-āĻāϰ āĻŽāϤ⧋āĨ¤ Element āĻŽāĻžāύ⧇ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏāĨ¤ Block-āĻāϰ āĻļ⧇āώ⧇ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻŦāĻžāĻ•ā§āϏ āĻĨāĻžāϕ⧇, āϝāĻžāϤ⧇ āĻĒāϰ⧇āϰ push_back āĻāϏ⧇ āϜāĻžāϝāĻŧāĻ—āĻž āĻĒāĻžāϝāĻŧāĨ¤

āϤāĻžāχ āĻāĻ•āϟāĻž vector-āĻāϰ āĻĻ⧁āχāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āĻĨāĻžāϕ⧇āĨ¤ āĻ“āϰ size āĻŽāĻžāύ⧇ āĻāχ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻ“ āĻ•āϝāĻŧāϟāĻž element āϧāϰ⧇ āφāϛ⧇āĨ¤ āĻ“āϰ capacity āĻŽāĻžāύ⧇ block-āĻ āĻ•āϝāĻŧāϟāĻž āĻŦāĻžāĻ•ā§āϏ⧇āϰ āϜāĻžāϝāĻŧāĻ—āĻž āφāϛ⧇āĨ¤ Size āĻ•āĻ–āύ⧋ capacity-āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻšāϝāĻŧ āύāĻžāĨ¤ C track-āĻ āĻāχ āĻĻ⧁āχāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧁āĻŽāĻŋ āύāĻŋāĻœā§‡ āĻĻ⧁āχāϟāĻž variable-āĻ āϰāĻžāĻ–āϤ⧇, āφāϰ vector āĻĻ⧁āĻŸā§‹āχ āϤ⧋āĻŽāĻžāϰ āĻšāϝāĻŧ⧇ āϰāĻžāϖ⧇āĨ¤

āĻāĻ•āϟāĻž vector: āϛ⧋āϟ āĻāĻ•āϟāĻž handle, āφāϰ size āĻ“ capacity-āϏāĻš āĻāĻ•āϟāĻž block āĻĒāĻžāρāϚāĻŦāĻžāϰ push_back call āĻ•āϰāĻžāϰ āĻĒāϰ⧇ vector<int> marks marks (handle) block: āĻļ⧁āϰ⧁ āϕ⧋āĻĨāĻžāϝāĻŧ size: 5 capacity: 8 size: 5āϟāĻž element-āĻ data āφāϛ⧇ 70 85 62 91 48 [0] [1] [2] [3] [4] [5] [6] [7] capacity: block-āĻ 8āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻĄā§āϝāĻžāĻļ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āφāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ–āĻžāϞāĻŋāĨ¤ āĻĒāϰ⧇āϰ āϤāĻŋāύāϟāĻž push_back āĻ“āϗ⧁āϞ⧋ āĻ­āϰāĻŦ⧇, āύāϤ⧁āύ block āĻ›āĻžāĻĄāĻŧāĻžāχāĨ¤ āϚāϤ⧁āĻ°ā§āĻĨāϟāĻž āĻ—āĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–āĻŦ⧇ block āĻ­āϰāĻž, āϤāĻ–āύ vector āωāϠ⧇ āϝāĻžāĻŦ⧇ āφāϰāĻ“ āĻŦāĻĄāĻŧ āĻāĻ•āϟāĻž block-āĻāĨ¤ Handle āύāĻŋāĻœā§‡ āϛ⧋āϟ: Playground-āĻ sizeof(vector<int>) āĻšāϞ⧋ 24 byte, vector āϝāϤ āϞāĻŽā§āĻŦāĻžāχ āĻšā§‹āĻ•āĨ¤

āϤāĻžāχ size āĻšāϞ⧋ āϤ⧁āĻŽāĻŋ āĻ•āϝāĻŧāϟāĻž āϰ⧇āϖ⧇āĻ›, āφāϰ capacity āĻšāϞ⧋ vector āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āĻ•āϤāϟāĻž āϜāĻžāϝāĻŧāĻ—āĻž āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āϰ⧇āϖ⧇āϛ⧇āĨ¤

āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύ⧇āχ āϝ⧇ syntax āϞāĻžāĻ—āĻŦ⧇

āĻāĻ•āϟāĻž vector, āφāϰ āĻ“āϰ āϰ⧋āϜāĻ•āĻžāϰ call-āϗ⧁āϞ⧋

#include <vector>

vector<T> v;                  an empty vector of T
vector<int> v(n, 0);          n elements, every one 0
vector<int> v{1, 2, 3};       exactly these three elements
v.push_back(x);               add x at the end
v[i]                          the element at index i, 0 to v.size() - 1
v.size()                      how many elements it holds
v.empty()                     true when it holds none
  • vector<T>: angle bracket-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻĨāĻžāϕ⧇ element-āĻāϰ type, Module 1-āĻāϰ template-āĻāϰ lesson-āĻ āϝ⧇āĻŽāύ āĻĻ⧇āϖ⧇āĻ›āĨ¤ vector<int>, vector<double> āφāϰ vector<string> āϤāĻŋāύāϟāĻž āφāϞāĻžāĻĻāĻž typeāĨ¤
  • push_back(x): āĻļ⧇āώ element-āĻāϰ āĻĒāϰ⧇ x-āĻāϰ āĻāĻ•āϟāĻž copy āĻŦāϏāĻžāϝāĻŧāĨ¤ Size āĻāĻ• āĻŦāĻžāĻĄāĻŧ⧇āĨ¤
  • v[i]: āĻāĻ•āϟāĻž element āĻĒāĻĄāĻŧ⧇ āĻŦāĻž āϞ⧇āϖ⧇, āĻ āĻŋāĻ• array-āĻāϰ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŽāϤ⧋āĨ¤ i āϏ⧀āĻŽāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āφāϛ⧇ āĻ•āĻŋ āύāĻž, āϕ⧇āω check āĻ•āϰ⧇ āύāĻžāĨ¤
  • size() āφāϰ empty(): āύāĻŋāĻœā§‡ āϗ⧁āύ⧇ āϰāĻžāĻ–āĻžāϰ āĻŦāĻĻāϞ⧇ vector-āϕ⧇āχ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧋āĨ¤

āϤāĻžāχ vector declare āĻ•āϰ⧋ angle bracket-āĻ element-āĻāϰ type āϞāĻŋāϖ⧇, āφāϰ āĻŦāĻžāĻ•āĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻšāϞ⧋ dot āĻĻāĻŋāϝāĻŧ⧇ āĻ“āϰ āωāĻĒāϰ āĻāĻ•āϟāĻž callāĨ¤

Vector āĻŦāĻžāύāĻžāύ⧋āϰ āϚāĻžāϰ āωāĻĒāĻžāϝāĻŧ

Vector āϤ⧁āĻŽāĻŋ āĻŦāĻžāύāĻžāĻŦ⧇ āϚāĻžāϰ āϰāĻ•āĻŽ āĻšā§‡āĻšāĻžāϰāĻžāϝāĻŧāĨ¤ āĻāχ program āĻĒā§āϰāϤāĻŋāϟāĻžāϰ āĻāĻ•āϟāĻž āĻ•āϰ⧇ āĻŦāĻžāύāĻžāϝāĻŧ, āϤāĻžāϰāĻĒāϰ āĻ“āĻĻ⧇āϰ size āφāϰ element-āϗ⧁āϞ⧋ print āĻ•āϰ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

void show(const char* name, const vector<int>& v) {
    cout << name << ": size " << v.size() << " [";
    for (int x : v) {
        cout << ' ' << x;
    }
    cout << " ]\n";
}

int main() {
    vector<int> empty_one;
    vector<int> zeros(5);
    vector<int> sevens(5, 7);
    vector<int> listed{3, 1, 4};

    show("empty_one", empty_one);
    show("zeros", zeros);
    show("sevens", sevens);
    show("listed", listed);
    return 0;
}
empty_one: size 0 [ ]
zeros: size 5 [ 0 0 0 0 0 ]
sevens: size 5 [ 7 7 7 7 7 ]
listed: size 3 [ 3 1 4 ]

āϚāĻžāϰāϟāĻž āϞāĻžāχāύ⧇āϰ āĻŽāĻžāύ⧇ āύāĻŋāĻšā§‡āϰ table-āĻāĨ¤

DeclarationāϝāĻž āĻĒāĻžāĻ“āĻ•āĻ–āύ āϞāĻŋāĻ–āĻŦ⧇
vector<int> v;āϕ⧋āύ⧋ element āύ⧇āχinput āφāϏāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ push_back āĻ•āϰāĻŦ⧇
vector<int> v(n);n-āϟāĻž element, āĻĒā§āϰāϤāĻŋāϟāĻž 0n āϜāĻžāύāĻž āφāϛ⧇, index āϧāϰ⧇ āĻ­āϰāĻŦ⧇
vector<int> v(n, x);n-āϟāĻž element, āĻĒā§āϰāϤāĻŋāϟāĻž xāϏāĻŦ element āĻāĻ•āχ āĻŽāĻžāύ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇
vector<int> v{a, b, c};āĻ āĻŋāĻ• a, b, cprogram āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ⧇āχ āĻŽāĻžāύāϗ⧁āϞ⧋ āϜāĻžāύāĻž

Initialiser āĻ›āĻžāĻĄāĻŧāĻž C array-āϤ⧇ garbage āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ vector<int> v(n)-āĻ āĻ•āĻ–āύ⧋ garbage āĻĨāĻžāϕ⧇ āύāĻž, āĻ“āϰ element-āϗ⧁āϞ⧋ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ 0 āĻĻāĻŋāϝāĻŧ⧇āĨ¤ Helper show vector-āϟāĻž āύ⧇āϝāĻŧ const& āĻĻāĻŋāϝāĻŧ⧇, āĻŽāĻžāύ⧇ Module 1-āĻāϰ āϏ⧇āχ read-only āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āύāĻžāĻŽ, āϤāĻžāχ āϕ⧋āύ⧋ copy āĻšāϝāĻŧ āύāĻžāĨ¤ āϤāĻžāχ āĻ—ā§‹āϞ bracket āĻĻ⧇āϝāĻŧ āĻāĻ•āϟāĻž āϗ⧁āύāϤāĻŋ, āφāϰ braces āĻĻ⧇āϝāĻŧ āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤ āĻ•āĻĨāĻžāϟāĻž āĻŽāύ⧇ āϰ⧇āĻ–ā§‹, āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“ āĻ…āĻ‚āĻļ⧇ āϞāĻžāĻ—āĻŦ⧇āĨ¤

push_back, āφāϰ input āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒāĻĄāĻŧāĻž

āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āϝ⧇ call āϞāĻŋāĻ–āĻŦ⧇, āϏ⧇āϟāĻž push_backāĨ¤ Input-āĻāϰ loop-āĻ āĻ“ "āĻ•āϝāĻŧāϟāĻž āφāϏāĻŦ⧇ āϜāĻžāύāĻŋ āύāĻž"-āϕ⧇ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ "āϜāĻžāύāĻžāϰ āĻĻāϰāĻ•āĻžāϰāχ āύ⧇āχ"āĨ¤ n āϜāĻžāύāĻž āĻĨāĻžāĻ•āϞ⧇āĻ“ āĻ–āĻžāϞāĻŋ vector-āĻ push_back āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧋, āĻ…āĻĨāĻŦāĻž āφāϗ⧇ size āĻ āĻŋāĻ• āĻ•āϰ⧇ index āϧāϰ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧋āĨ¤ āĻĻ⧁āĻŸā§‹āχ āĻ āĻŋāĻ•āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    vector<int> b;
    int x;
    while (cin >> x) {
        b.push_back(x);
    }

    cout << "a has " << a.size() << ", b has " << b.size() << '\n';
    return 0;
}
a has 3, b has 4

āĻ“āχ output-āϟāĻž input 3, āϤāĻžāϰāĻĒāϰ 10 20 30, āϤāĻžāϰāĻĒāϰ 7 8 9 6-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻĒā§āϰāĻĨāĻŽ loop āĻ āĻŋāĻ• n-āϟāĻž āĻŽāĻžāύ āĻĒāĻĄāĻŧ⧇, āĻāĻŽāύ āĻŦāĻžāĻ•ā§āϏ⧇ āϝ⧇āϗ⧁āϞ⧋ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āφāϛ⧇āĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧāϟāĻž āĻŦāĻžāĻ•āĻŋ āϝāĻž āĻĨāĻžāϕ⧇, āϏāĻŦ āύāĻŋāϝāĻŧ⧇ āύ⧇āϝāĻŧāĨ¤ āϤāĻžāχ a[i] āφāϗ⧇ āĻĨ⧇āϕ⧇ āĻĨāĻžāĻ•āĻž āĻāĻ•āϟāĻž element āĻ­āϰ⧇, āφāϰ push_back āĻāĻ•āĻĻāĻŽ āύāϤ⧁āύ āĻāĻ•āϟāĻž āĻŦāĻžāύāĻžāϝāĻŧāĨ¤

āϜāĻžāϝāĻŧāĻ—āĻž āĻĢ⧁āϰāĻŋāϝāĻŧ⧇ āϗ⧇āϞ⧇ āĻ­āĻŋāϤāϰ⧇ āϕ⧀ āĻšāϝāĻŧ

Block āĻ­āϰāĻž āĻĨāĻžāĻ•āϞ⧇ push_back āĻ“āϟāĻžāϕ⧇ āĻŸā§‡āύ⧇ āϞāĻŽā§āĻŦāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ block-āĻāϰ āĻ āĻŋāĻ• āĻĒāϰ⧇āϰ memory āĻšāϝāĻŧāϤ⧋ āĻ…āĻ¨ā§āϝ āĻ•āĻžāϰāĻ“āĨ¤ āϤāĻžāχ vector āϚāĻžāϰāϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇: āύāϤ⧁āύ, āφāϰāĻ“ āĻŦāĻĄāĻŧ āĻāĻ•āϟāĻž block āϚāĻžāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻž element āϏ⧇āĻ–āĻžāύ⧇ copy āĻ•āϰ⧇, āĻĒ⧁āϰ⧋āύ⧋ block-āϟāĻž free āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ āύāϤ⧁āύ element-āϟāĻž āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻāϟāĻžāϕ⧇āχ āĻŦāϞ⧇ reallocationāĨ¤

āĻāĻŦāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻšā§‹āϖ⧇ āĻĻ⧇āĻ–ā§‹āĨ¤ āĻāχ program āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ vector-āĻ āĻĒāĻžāρāϚāϟāĻž āύāĻŽā§āĻŦāϰ push āĻ•āϰ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž call-āĻāϰ āĻĒāϰ⧇ print āĻ•āϰ⧇ size, capacity, āφāϰ element-āϗ⧁āϞ⧋ āĻāĻ–āύ āύāϤ⧁āύ block-āĻ āωāϠ⧇āϛ⧇ āĻ•āĻŋ āύāĻžāĨ¤ data() return āĻ•āϰ⧇ block-āϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻļ⧁āϰ⧁, āϤāĻžāχ data() āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇ āĻŦ⧁āĻāĻŦ⧇ vector āϜāĻžāϝāĻŧāĻ—āĻž āĻŦāĻĻāϞ⧇āϛ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> marks;
    int input[] = {70, 85, 62, 91, 48};
    for (int x : input) {
        const int* before = marks.data();
        marks.push_back(x);
        cout << "push_back(" << x << "): size " << marks.size()
             << ", capacity " << marks.capacity();
        if (marks.data() != before) {
            cout << ", new block";
        }
        cout << '\n';
    }
    return 0;
}
push_back(70): size 1, capacity 1, new block
push_back(85): size 2, capacity 2, new block
push_back(62): size 3, capacity 4, new block
push_back(91): size 4, capacity 4
push_back(48): size 5, capacity 8, new block

āύāĻŋāĻšā§‡ āĻāĻ•āχ āĻĒāĻžāρāϚāϟāĻž call āĻāĻ• āĻāĻ• āϧāĻžāĻĒ āĻ•āϰ⧇ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϧāĻžāĻĒ⧇ āĻĻ⧇āĻ–āĻŦ⧇ āφāϗ⧇āϰ āφāϰ āĻĒāϰ⧇āϰ block, āφāϰ āĻ•āϝāĻŧāϟāĻž element copy āĻšāϞ⧋āĨ¤

āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ vector<int>-āĻ āĻĒāĻžāρāϚāĻŦāĻžāϰ push_back, āĻŽāĻžāĻĒāĻž āĻšāϝāĻŧ⧇āϛ⧇ GCC 12-āĻ, Playground-āĻāϰ flag āĻĻāĻŋāϝāĻŧ⧇āĨ¤ āĻĒāĻžāρāϚāϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϚāĻžāϰāϟāĻž call-āĻāχ āύāϤ⧁āύ block āϞ⧇āϗ⧇āϛ⧇āĨ¤

CallāĻāϰāĻĒāϰ āϝ⧇ element-āϗ⧁āϞ⧋ āφāϛ⧇SizeCapacityāύāϤ⧁āύ block?āĻ•āϝāĻŧāϟāĻž element copy āĻšāϞ⧋
push_back(70)7011āĻšā§āϝāĻžāρ0
push_back(85)70 8522āĻšā§āϝāĻžāρ1
push_back(62)70 85 6234āĻšā§āϝāĻžāρ2
push_back(91)70 85 62 9144āύāĻž0
push_back(48)70 85 62 91 4858āĻšā§āϝāĻžāρ4

āφāĻŽāĻžāĻĻ⧇āϰ compiler-āĻ capacity āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āĻšāϝāĻŧ: 1, 2, 4, 8, āϤāĻžāϰāĻĒāϰ 16, 32, āĻāĻ­āĻžāĻŦ⧇āĨ¤ āĻ•āϤ āϗ⧁āĻŖ āĻŦāĻžāĻĄāĻŧāĻŦ⧇, C++ standard āϏ⧇āϟāĻž āĻŦ⧇āρāϧ⧇ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ āĻ“ āĻļ⧁āϧ⧁ āĻ•āĻĨāĻž āĻĻ⧇āϝāĻŧ, āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ call āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ āϧāϰāϞ⧇ āĻ—āĻĄāĻŧ⧇ push_back-āĻāϰ āĻ–āϰāϚ constant timeāĨ¤ āϤāĻžāχ copy āϖ⧁āĻŦ āĻ•āĻŽāχ āĻšāϝāĻŧ: āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— call āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻĢāĻžāρāĻ•āĻž āĻŦāĻžāĻ•ā§āϏ āĻ­āϰ⧇āĨ¤ āĻĒ⧁āϰ⧋ āĻšāĻŋāϏāĻžāĻŦāϟāĻž āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 05āĨ¤

āϤāĻžāχ push_back āĻĒā§āϰāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰāχ āϏāĻ¸ā§āϤāĻž, āĻļ⧁āϧ⧁ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āĻĒ⧁āϰ⧋ vector-āϟāĻž āĻ…āĻ¨ā§āϝ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϏāϰāĻŋāϝāĻŧ⧇ āύ⧇āϝāĻŧāĨ¤

Index, āφāϰ āĻļ⧇āώ index

Vector-āĻāϰ element-āϗ⧁āϞ⧋āϰ āύāĻŽā§āĻŦāϰ array-āĻāϰ āĻŽāϤ⧋āχ, āĻļ⧁āϰ⧁ 0 āĻĨ⧇āϕ⧇āĨ¤ n size-āĻāϰ vector-āĻ index āϚāϞ⧇ 0 āĻĨ⧇āϕ⧇ n - 1 āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āĻļ⧇āώ element āĻšāϞ⧋ v[v.size() - 1], āφāϰ āĻāϰ āϛ⧋āϟ āϰ⧂āĻĒ v.back() āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 02āĨ¤

Bob Amara-āϰ āύāĻŽā§āĻŦāϰāϗ⧁āϞ⧋ print āĻ•āϰāϛ⧇āĨ¤ āĻļ⧇āώ⧇āϰāϟāĻž āϝ⧇āύ āϕ⧋āύ⧋āĻ­āĻžāĻŦ⧇āχ āĻŦāĻžāĻĻ āύāĻž āĻĒāĻĄāĻŧ⧇, āϤāĻžāχ āĻ“ āϞ⧇āϖ⧇ <=āĨ¤

vector<int> marks{70, 85, 62, 91, 48};
for (int i = 0; i <= marks.size(); i++) {
    cout << marks[i] << ' ';
}

Playground-āĻ āĻāϟāĻž āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āĻ›āĻžāĻĄāĻŧāĻžāχ compile āĻšāϝāĻŧ⧇āϛ⧇, āφāϰ āĻļ⧇āώ āĻšāϝāĻŧ⧇āϛ⧇ āϏāĻĢāϞ badge āύāĻŋāϝāĻŧ⧇āĨ¤ Print āĻ•āϰ⧇āϛ⧇ 70 85 62 91 48 0āĨ¤ āĻļ⧇āώ⧇āϰ 0-āϟāĻž āĻšāϞ⧋ marks[5], āφāϰ āĻ“āχ āĻŦāĻžāĻ•ā§āϏāϟāĻž āϕ⧋āύ⧋ element āύāĻž: block-āĻāϰ āĻ āĻŋāĻ• āĻĒāϰ⧇ memory-āϤ⧇ āϝāĻž āĻĒāĻĄāĻŧ⧇ āĻ›āĻŋāϞ, āϏ⧇āϟāĻžāχāĨ¤ C track-āĻāϰ array lesson-āĻāϰ āϏ⧇āχ āĻāĻ•āχ āύ⧀āϰāĻŦ bug, āĻ•āĻžāϰāĻŖ v[i] āĻ•āĻŋāϛ⧁āχ check āĻ•āϰ⧇ āύāĻžāĨ¤ āĻ…āĻ¨ā§āϝ āĻĻāĻŋāύ⧇ āĻŦāĻž āĻ…āĻ¨ā§āϝ āĻŽā§‡āĻļāĻŋāύ⧇ āĻ“āχ 0 āϝ⧇āϕ⧋āύ⧋ āϏāĻ‚āĻ–ā§āϝāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āĻāĻŽāύāĻ•āĻŋ program crash-āĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āϞ⧇āĻ–ā§‹ i < marks.size()āĨ¤ āϤ⧁āĻŽāĻŋ <= āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ "size āĻĒāĻ°ā§āϝāĻ¨ā§āϤ" āĻļ⧁āύāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ size-āĻ“ āϤāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻĄāĻŧ⧇āĨ¤ āϤāĻžāχ āĻāĻ•āϟāĻž index āϏ⧀āĻŽāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻĨāĻžāϕ⧇ āϤāĻ–āύāχ, āϝāĻ–āύ 0 <= i āφāϰ i < v.size()āĨ¤ āϝ⧇ at() āύāĻŋāĻœā§‡āχ check āĻ•āϰ⧇, āϏ⧇āϟāĻž āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 02āĨ¤

size() āĻāĻ•āϟāĻž unsigned āϏāĻ‚āĻ–ā§āϝāĻž

v.size() āϕ⧋āύ⧋ int return āĻ•āϰ⧇ āύāĻžāĨ¤ āĻ“ return āĻ•āϰ⧇ size_t, āĻāĻ•āϟāĻž unsigned type: āĻāĻŽāύ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž, āϝ⧇āϟāĻž āĻ•āĻ–āύ⧋ negative āĻšāϝāĻŧ āύāĻžāĨ¤ Playground-āĻ āĻāϟāĻž 64 bit āϚāĻ“āĻĄāĻŧāĻžāĨ¤ āϤāĻžāχ 0-āĻāϰ āύāĻŋāĻšā§‡ āύāĻžāĻŽāϤ⧇ āϗ⧇āϞ⧇ āϘ⧁āϰ⧇ āĻāĻ•āĻĻāĻŽ āωāĻĒāϰ⧇āϰ āĻŽāĻžāĻĨāĻžāϝāĻŧ āϚāϞ⧇ āϝāĻžāϝāĻŧ, C track-āĻāϰ Module 2-āĻ unsigned āϏāĻ‚āĻ–ā§āϝāĻž āϝ⧇āĻŽāύ āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v;
    cout << "size: " << v.size() << '\n';
    cout << "size - 1: " << v.size() - 1 << '\n';
    return 0;
}
size: 0
size - 1: 18446744073709551615

Zara āϏāĻŦāϏāĻŽāϝāĻŧ āφāϗ⧇ āĻ–āĻžāϞāĻŋ input āϚāĻžāϞāĻžāϝāĻŧāĨ¤ āĻāĻŦāĻžāϰ āĻ“ Bob-āĻāϰ "āĻļ⧇āώ index" loop-āϟāĻž āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ vector-āĻ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āϖ⧇āĨ¤

vector<int> v;
for (int i = 0; i <= v.size() - 1; i++) {
    cout << v[i] << '\n';
}

Bob āϭ⧇āĻŦ⧇āĻ›āĻŋāϞ loop āĻāĻ•āĻŦāĻžāϰāĻ“ āϚāϞāĻŦ⧇ āύāĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ v.size() - 1 āĻšāϞ⧋ 18446744073709551615, āϤāĻžāχ i <= ... test-āϟāĻž āϏāĻŦāϏāĻŽāϝāĻŧ āϏāĻ¤ā§āϝāĻŋ āĻĨāĻžāϕ⧇, āφāϰ loop āĻ–āĻžāϞāĻŋ vector āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻŦāĻšā§ āĻĻā§‚āϰ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒāĻĄāĻŧāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤ Playground-āĻ āĻ•āĻŋāϛ⧁āχ print āύāĻž āĻ•āϰ⧇ āĻāϟāĻž āĻļ⧇āώ āĻšāϝāĻŧ⧇āϛ⧇ Runtime error badge āύāĻŋāϝāĻŧ⧇āĨ¤

Playground -Wall āĻ›āĻžāĻĄāĻŧāĻž compile āĻ•āϰ⧇, āϤāĻžāχ āĻ•āĻŋāϛ⧁āχ āĻŦāϞ⧇ āύāĻžāĨ¤ āύāĻŋāĻœā§‡āϰ āĻŽā§‡āĻļāĻŋāύ⧇ -Wall -Wextra āĻĻāĻŋāϞ⧇ GCC 12 āĻĻ⧁āχ āϰāĻ•āĻŽ type āĻŽā§‡āĻļāĻžāύ⧋ āύāĻŋāϝāĻŧ⧇ warning āĻĻ⧇āϝāĻŧ: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]āĨ¤ āϞ⧇āĻ–ā§‹ i < v.size(), āϝ⧇āϟāĻž āĻĻāĻžāρāĻĄāĻŧāĻžāϝāĻŧ 0 < 0, āĻŽāĻžāύ⧇ āĻŽāĻŋāĻĨā§āϝāĻž, āĻ…āĻĨāĻŦāĻž āφāϗ⧇ v.empty() check āĻ•āϰ⧋āĨ¤ āϤāĻžāχ vector āĻ–āĻžāϞāĻŋ āύāĻž, āĻāϟāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āĻ•āĻ–āύ⧋ size() āĻĨ⧇āϕ⧇ āĻŦāĻŋāϝāĻŧā§‹āĻ— āϕ⧋āϰ⧋ āύāĻžāĨ¤

Range-for āĻĒā§āϰāϤāĻŋāϟāĻž element āϘ⧁āϰ⧇ āφāϏ⧇

āϝāĻ–āύ āĻĒā§āϰāϤāĻŋāϟāĻž element āĻ•ā§āϰāĻŽ āϧāϰ⧇ āϞāĻžāĻ—āĻŦ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ index āϞāĻžāĻ—āĻŦ⧇ āύāĻž, āϤāĻ–āύ Module 1-āĻāϰ range-for-āχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ loopāĨ¤ for (int m : marks) āϤ⧋āĻŽāĻžāϕ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž element-āĻāϰ āĻāĻ•āϟāĻž copy āĻĻ⧇āϝāĻŧāĨ¤ for (int& m : marks) āĻĻ⧇āϝāĻŧ āĻĒā§āϰāϤāĻŋāϟāĻžāϰ āĻāĻ•āϟāĻž āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āύāĻžāĻŽ, āϤāĻžāχ āϝāĻž āĻŦāĻĻāϞāĻžāĻŦ⧇, āϏ⧇āϟāĻž vector-āĻ āĻ—āĻŋāϝāĻŧ⧇ āĻĒ⧌āρāĻ›āĻžāĻŦ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> marks{70, 85, 62};

    for (int m : marks) {
        m += 5;
    }
    cout << "after the copy loop:";
    for (int m : marks) {
        cout << ' ' << m;
    }
    cout << '\n';

    for (int& m : marks) {
        m += 5;
    }
    cout << "after the reference loop:";
    for (int m : marks) {
        cout << ' ' << m;
    }
    cout << '\n';
    return 0;
}
after the copy loop: 70 85 62
after the reference loop: 75 90 67

āϤāĻžāχ āĻļ⧁āϧ⧁ āĻĒāĻĄāĻŧāϤ⧇ āϚāĻžāχāϞ⧇ int m (element āĻŦāĻĄāĻŧ āĻšāϞ⧇ const int& m), āφāϰ āĻŦāĻĻāϞāĻžāϤ⧇ āϚāĻžāχāϞ⧇ int& māĨ¤ Range-for āĻ•āĻ–āύ⧋ āĻļ⧇āώ⧇āϰ āĻŦāĻžāχāϰ⧇ āϝāĻžāϝāĻŧ āύāĻž, āϤāĻžāχ Bob-āĻāϰ āϭ⧁āϞāϟāĻž āĻāĻ–āĻžāύ⧇ āĻšāϤ⧇āχ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤

Example 1: āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϛ⧋āϟ vector program

āϤāĻŋāύāĻŦāĻžāϰ push_back, āϤāĻžāϰāĻĒāϰ size, āϤāĻžāϰāĻĒāϰ index āϧāϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž elementāĨ¤ āĻĒ⧁āϰ⧋ āϧāĻžāϰāĻŖāĻžāϟāĻž main-āĻāϰ āĻŽāĻžāĻ¤ā§āϰ āĻ•āϝāĻŧ⧇āĻ• āϞāĻžāχāύ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<double> temps;
    temps.push_back(21.5);
    temps.push_back(23.0);
    temps.push_back(19.75);

    cout << temps.size() << " readings\n";
    for (size_t i = 0; i < temps.size(); i++) {
        cout << "temps[" << i << "] = " << temps[i] << '\n';
    }
    return 0;
}
3 readings
temps[0] = 21.5
temps[1] = 23
temps[2] = 19.75

Index-āϟāĻž āĻāĻ•āϟāĻž size_t, size()-āĻāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āχ type, āϤāĻžāχ āϤ⧁āϞāύāĻžāϝāĻŧ āϕ⧋āύ⧋ type āĻŽā§‡āĻļ⧇ āύāĻžāĨ¤ cout 23.0-āϕ⧇ print āĻ•āϰ⧇ 23 āĻšāĻŋāϏ⧇āĻŦ⧇: āĻĻāĻļāĻŽāĻŋāϕ⧇āϰ āĻĒāϰ⧇ āĻ•āĻŋāϛ⧁ āύāĻž āĻĨāĻžāĻ•āϞ⧇ āĻāĻ•āϟāĻž double-āĻāϰ āϜāĻ¨ā§āϝ āĻāϟāĻžāχ āĻ“āϰ defaultāĨ¤

Run in Compiler
Example 2: Amara-āϰ āύāĻŽā§āĻŦāϰ, āϏāĻžāĻĨ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋāϟāĻž

Input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ Amara āύāĻŽā§āĻŦāϰ āĻĒāĻĄāĻŧ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ āϏāĻŦāϗ⧁āϞ⧋ āĻāĻ• āϞāĻžāχāύ⧇ print āĻ•āϰ⧇, āϏāĻžāĻĨ⧇ āĻ•āϝāĻŧāϟāĻž āύāĻŽā§āĻŦāϰ āφāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āύāĻŽā§āĻŦāϰāϟāĻžāĨ¤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋāϟāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ marks[0] āĻĨ⧇āϕ⧇, āϤāĻžāχ program āφāϗ⧇ āĻĻ⧇āϖ⧇ āύ⧇āϝāĻŧ, āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻž āύāĻŽā§āĻŦāϰ āφāϛ⧇ āĻ•āĻŋ āύāĻžāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> marks;
    int x;
    while (cin >> x) {
        marks.push_back(x);
    }
    if (marks.empty()) {
        cout << "no marks\n";
        return 0;
    }

    int best = marks[0];
    cout << "marks:";
    for (int m : marks) {
        cout << ' ' << m;
        if (m > best) {
            best = m;
        }
    }
    cout << '\n' << marks.size() << " marks, highest " << best << '\n';
    return 0;
}
marks: 70 85 62 91 48
5 marks, highest 91

āĻ“āχ output-āϟāĻž input 70 85 62 91 48-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻ–āĻžāϞāĻŋ input āĻĻāĻŋāϞ⧇ print āĻ•āϰ⧇ no marksāĨ¤ empty() check āύāĻž āĻĨāĻžāĻ•āϞ⧇ āĻ–āĻžāϞāĻŋ vector-āĻ marks[0] āĻāĻŽāύ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻĒāĻĄāĻŧāϤ, āϝ⧇āϟāĻžāϰ āϕ⧋āύ⧋ āĻ…āĻ¸ā§āϤāĻŋāĻ¤ā§āĻŦāχ āύ⧇āχāĨ¤

Run in Compiler
Example 3: Zara-āϰ āĻĻāĻžāĻŽā§‡āϰ āϤāĻžāϞāĻŋāĻ•āĻž, āĻ–āĻžāϞāĻŋ input āϏāĻŦāĻžāϰ āφāϗ⧇

Input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ Zara āĻĻā§‹āĻ•āĻžāύ⧇āϰ āĻĻāĻžāĻŽ āĻĒāĻĄāĻŧ⧇āĨ¤ āϰāϏāĻŋāĻĻ⧇ āϝ⧇āĻŽāύ āĻĨāĻžāϕ⧇, āϤ⧇āĻŽāύāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĻāĻžāĻŽ print āĻ•āϰ⧇ 1 āĻĨ⧇āϕ⧇ āĻ—ā§‹āύāĻž āĻ•ā§āϰāĻŽāĻŋāĻ• āύāĻŽā§āĻŦāϰāϏāĻš, āϤāĻžāϰāĻĒāϰ āĻŽā§‹āϟāĨ¤ āĻ–āĻžāϞāĻŋ input-āĻāϰ case-āϟāĻž āĻ“ āϞāĻŋāϖ⧇āϛ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁āϰ āφāϗ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> prices;
    int p;
    while (cin >> p) {
        prices.push_back(p);
    }

    if (prices.empty()) {
        cout << "no prices\n";
        return 0;
    }

    long long total = 0;
    for (size_t i = 0; i < prices.size(); i++) {
        cout << "item " << i + 1 << ": " << prices[i] << '\n';
        total += prices[i];
    }
    cout << "total: " << total << '\n';
    cout << "last item: " << prices[prices.size() - 1] << '\n';
    return 0;
}
item 1: 120
item 2: 45
item 3: 300
item 4: 80
total: 545
last item: 80

āĻ“āχ output-āϟāĻž input 120 45 300 80-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāĻ–āĻžāύ⧇ prices.size() - 1 āύāĻŋāϰāĻžāĻĒāĻĻ, āĻ•āĻžāϰāĻŖ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϞ⧇ empty() check āφāϗ⧇āχ return āĻ•āϰ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āĨ¤ āϰāϏāĻŋāĻĻ⧇āϰ āύāĻŽā§āĻŦāϰ i + 1, āĻ•āĻŋāĻ¨ā§āϤ⧁ index āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻŧ iāĨ¤

Run in Compiler

āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇

  • Bitcoin Core. āĻāĻ•āϟāĻž transaction āĻ“āϰ input āφāϰ output āϰāĻžāϖ⧇ āĻĻ⧁āχāϟāĻž vector-āĻ, std::vector<CTxIn> vin āφāϰ std::vector<CTxOut> vout, file primitives/transaction.h-āĻāĨ¤ āĻāĻ•āϟāĻž transaction-āĻ āϝāϤāϗ⧁āϞ⧋ āϖ⧁āĻļāĻŋ input āφāϰ output āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāχ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āϜāĻžāύāĻž āϝāĻžāϝāĻŧ āĻļ⧁āϧ⧁ āĻĒāĻĄāĻŧāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤
  • ROS 2. Robot Operating System āĻāĻ•āϟāĻž message-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž array field, āϝ⧇āĻŽāύ laser scan-āĻāϰ float32[] ranges, generate āĻ•āϰāĻž C++ code-āĻ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻ•āϟāĻž std::vectorāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž scan-āĻ reading-āĻāϰ āϏāĻ‚āĻ–ā§āϝāĻž āφāϞāĻžāĻĻāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • LLVM āφāϰ Clang. āĻāχ compiler āύāĻžāύāĻž āϜāĻŋāύāĻŋāϏ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻž function-āĻāϰ argument āĻŦāĻž āĻāĻ•āϟāĻž instruction-āĻāϰ operand, āϰāĻžāϖ⧇ vector-āĻāϰ āĻŽāϤ⧋ container-āĻāĨ¤ āĻ“āĻĻ⧇āϰ āύāĻŋāĻœā§‡āĻĻ⧇āϰ SmallVector āĻāĻŽāύ āĻāĻ•āϟāĻž vector, āϝāĻžāϰ āĻ­āĻŋāϤāϰ⧇āχ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻŦāĻžāύāĻžāύ⧋ āĻĨāĻžāϕ⧇; āĻāϟāĻž āϕ⧇āύ āφāϛ⧇, āϏ⧇āϟāĻž āĻŦāϞāĻŦ⧇ lesson 05āĨ¤

āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇

ā§§. āĻāĻŽāύ index-āĻ āϞ⧇āĻ–āĻž, āϝ⧇āϟāĻž āĻāĻ–āύ⧋ āύ⧇āχāĨ¤

vector<int> marks;
for (int i = 0; i < 3; i++) {
    cin >> marks[i];
}

āϕ⧋āύ⧋ command line-āĻāχ āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχāĨ¤ Playground-āĻ input 70 85 62 āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞāĻžāϞ⧇ āĻāϟāĻž āĻļ⧇āώ āĻšāϝāĻŧ⧇āϛ⧇ Runtime error badge āύāĻŋāϝāĻŧ⧇, āĻ•āĻŋāϛ⧁āχ print āĻ•āϰ⧇āύāĻŋāĨ¤ marks āĻ–āĻžāϞāĻŋ, āϤāĻžāχ marks[0] āϕ⧋āύ⧋ āĻŦāĻžāĻ•ā§āϏāχ āύāĻž; [] āĻ•āĻ–āύ⧋ āύāϤ⧁āύ element āĻŦāĻžāύāĻžāϝāĻŧ āύāĻžāĨ¤ marks.push_back(x) āϞ⧇āĻ–ā§‹, āĻ…āĻĨāĻŦāĻž āφāϗ⧇ vector<int> marks(3); āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āύāĻžāĻ“āĨ¤ āϤ⧁āĻŽāĻŋ āĻāχ āϭ⧁āϞāϟāĻž āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻ āĻŋāĻ• size-āĻāϰ array-āϤ⧇ āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āĻĨāĻžāĻ•āϤāĨ¤

⧍. #include <vector> āϞāĻŋāĻ–āϤ⧇ āϭ⧁āϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāĨ¤

#include <iostream>
using namespace std;

int main() {
    vector<int> marks;
}

āĻĒā§āϰāϤāĻŋāϟāĻž command line-āĻ error, Playground-āϏāĻš: error: 'vector' was not declared in this scopeāĨ¤ GCC 12 āύāĻŋāĻœā§‡āχ āϏāĻŽāĻžāϧāĻžāύāϟāĻž āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ: note: 'std::vector' is defined in header '<vector>'; did you forget to '#include <vector>'?āĨ¤ Include-āϟāĻž āϝ⧋āĻ— āĻ•āϰ⧋āĨ¤ āϤ⧁āĻŽāĻŋ āĻāϟāĻž āϭ⧁āϞāĻŦ⧇, āĻ•āĻžāϰāĻŖ <bits/stdc++.h> āĻĻ⧇āĻ“āϝāĻŧāĻž program-āĻ āĻāϟāĻž āĻ•āĻ–āύ⧋ āϞāĻžāϗ⧇āύāĻŋ (Module 1, lesson 07)āĨ¤

ā§Š. Vector-āĻāϰ size āĻ āĻŋāĻ• āĻ•āϰ⧇ āĻĻāĻŋāϝāĻŧ⧇ āφāĻŦāĻžāϰ push-āĻ“ āĻ•āϰāĻžāĨ¤

int n = 3;
vector<int> marks(n);
for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    marks.push_back(x);
}

āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχāĨ¤ Input 70 85 62 āĻĻāĻŋāϞ⧇ vector-āĻ āĻĨāĻžāϕ⧇ 0 0 0 70 85 62, size 6āĨ¤ marks(n) āφāϗ⧇āχ āϤāĻŋāύāϟāĻž element āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āϰ⧇āϖ⧇āĻ›āĻŋāϞ, āφāϰ push_back āĻ“āĻĻ⧇āϰ āĻĒāϰ⧇ āφāϰāĻ“ āϤāĻŋāύāϟāĻž āϜ⧁āĻĄāĻŧ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āĨ¤ āϝ⧇āϕ⧋āύ⧋ āĻāĻ•āϟāĻž āĻŦ⧇āϛ⧇ āύāĻžāĻ“: vector<int> marks(n)-āĻāϰ āϏāĻžāĻĨ⧇ cin >> marks[i], āĻ…āĻĨāĻŦāĻž āĻ–āĻžāϞāĻŋ vector-āĻāϰ āϏāĻžāĻĨ⧇ push_backāĨ¤ āϤ⧁āĻŽāĻŋ āĻĻ⧁āĻŸā§‹ āĻŽāĻŋāĻļāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞāĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻĻ⧁āĻŸā§‹āϕ⧇āχ āĻĻ⧇āϖ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ "n-āϟāĻžāϰ āϜāĻ¨ā§āϝ āϜāĻžāϝāĻŧāĻ—āĻž āĻŦāĻžāύāĻžāĻ“"āĨ¤

ā§Ē. << āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āϰ⧋ vector print āĻ•āϰāĻžāĨ¤

vector<int> marks{70, 85};
cout << marks << '\n';

āĻĒā§āϰāϤāĻŋāϟāĻž command line-āĻ error: error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'std::vector<int>'), āϤāĻžāϰāĻĒāϰ candidate-āĻĻ⧇āϰ āϞāĻŽā§āĻŦāĻž āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤ āĻļ⧁āϧ⧁ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύāϟāĻž āĻĒāĻĄāĻŧā§‹: cout āϜāĻžāύ⧇ āύāĻž, vector āϕ⧀āĻ­āĻžāĻŦ⧇ print āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ Element-āϗ⧁āϞ⧋ āĻāĻ•āϟāĻž loop āĻĻāĻŋāϝāĻŧ⧇ print āĻ•āϰ⧋āĨ¤ āϤ⧁āĻŽāĻŋ āĻāϟāĻž āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ cout āϤ⧋ āĻāĻ•āϟāĻž string āĻĻāĻŋāĻŦā§āϝāĻŋ print āĻ•āϰ⧇, āφāϰ vector-āϕ⧇āĻ“ āĻĻ⧇āĻ–āϤ⧇ āφāϰ⧇āĻ•āϟāĻž container-āχ āĻŽāύ⧇ āĻšāϝāĻŧāĨ¤

āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“

Kenji āϚāĻžāϝāĻŧ āĻĒāĻžāρāϚāϟāĻž element-āĻāϰ āĻāĻ•āϟāĻž vectorāĨ¤ Maria āϚāĻžāϝāĻŧ āĻāĻŽāύ āĻāĻ•āϟāĻž vector, āϝ⧇āϟāĻžāϝāĻŧ 5 āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āφāϛ⧇āĨ¤ āĻĻ⧁āϜāύ⧇ āĻāχ āĻĻ⧁āχāϟāĻž āϞāĻžāχāύ āϞ⧇āϖ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> kenji(5);
    vector<int> maria{5};
    cout << kenji.size() << ' ' << maria.size() << '\n';
    return 0;
}

āĻĻ⧁āĻŸā§‹āχ āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āĻ›āĻžāĻĄāĻŧāĻž compile āĻšāϝāĻŧāĨ¤ Program āϕ⧀ print āĻ•āϰ⧇, āϕ⧋āύ vector-āĻ āϕ⧀ āφāϛ⧇, āφāϰ āĻĻ⧁āϜāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧇ āϝāĻž āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ āϤāĻž āĻĒ⧇āϝāĻŧ⧇āϛ⧇?

"Vector āĻŦāĻžāύāĻžāύ⧋āϰ āϚāĻžāϰ āωāĻĒāĻžāϝāĻŧ" āĻ…āĻ‚āĻļāϟāĻž āφāĻŦāĻžāϰ āĻĻ⧇āĻ–ā§‹āĨ¤ āϕ⧋āύ bracket āĻĻ⧇āϝāĻŧ āϗ⧁āύāϤāĻŋ, āφāϰ āϕ⧋āύāϟāĻž āĻĻ⧇āϝāĻŧ āϤāĻžāϞāĻŋāĻ•āĻž?

āĻ…āύ⧁āĻļā§€āϞāύ ā§§āϏāĻšāϜ

āĻ–āĻžāϤāĻžāϗ⧁āϞ⧋ āϝ⧇ āĻ•ā§āϰāĻŽā§‡ āĻāϏ⧇āĻ›āĻŋāϞ, Amara āĻĢ⧇āϰāϤ āĻĻāĻŋāϤ⧇ āϚāĻžāϝāĻŧ āĻ āĻŋāĻ• āϤāĻžāϰ āωāĻ˛ā§āĻŸā§‹ āĻ•ā§āϰāĻŽā§‡āĨ¤ Input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āύāĻŽā§āĻŦāϰ āĻĒāĻĄāĻŧā§‹, āĻāĻ•āϟāĻž vector-āĻ āϰāĻžāĻ–ā§‹, āϤāĻžāϰāĻĒāϰ āĻļ⧇āώāϟāĻž āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻĨāĻŽāϟāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ print āĻ•āϰ⧋āĨ¤

Input. āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž, space āĻŦāĻž āύāϤ⧁āύ āϞāĻžāχāύ āĻĻāĻŋāϝāĻŧ⧇ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻž, input āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤

Output. āĻŽāĻžāύāϗ⧁āϞ⧋ āωāĻ˛ā§āĻŸā§‹ āĻ•ā§āϰāĻŽā§‡, āĻāĻ• āϞāĻžāχāύ⧇, āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž āĻ•āϰ⧇ spaceāĨ¤

Constraints. 1 āĻĨ⧇āϕ⧇ 200000āϟāĻž āĻŽāĻžāύ, āĻĒā§āϰāϤāĻŋāϟāĻž -1000000000 āĻĨ⧇āϕ⧇ 1000000000-āĻāϰ āĻŽāĻ§ā§āϝ⧇āĨ¤

Sample. Input 70 85 62 91 48 āĻĻāĻŋāϞ⧇ 48 91 62 85 70āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> marks;
    int x;
    while (cin >> x) {
        marks.push_back(x);
    }

    // Print the marks from the last element back to the first,
    // on one line, separated by single spaces.

    return 0;
}

reverse-input āύāĻžāĻŽā§‡ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧ, āĻāχ module-āĻāϰ problem set-āĻāϰ āĻāĻ•āϟāĻž free problemāĨ¤ Hidden test-āĻ āφāϛ⧇ āĻāĻ•āϟāĻžāĻŽāĻžāĻ¤ā§āϰ āĻŽāĻžāύ, āφāϰ 200000āϟāĻž āĻŽāĻžāύāĨ¤ āϏ⧇āϗ⧁āϞ⧋ āϧāϰ⧇ āĻĢ⧇āϞ⧇ āĻāĻŽāύ loop, āϝ⧇āϟāĻž marks[marks.size()] āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ, āφāϰ āĻāĻŽāύ loop, āϝ⧇āϟāĻž marks[0] āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒ⧌āρāĻ›āĻžāϝāĻŧāχ āύāĻžāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ⧍āĻŽāĻžāĻāĻžāϰāĻŋ

Maria n-āϟāĻž āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž āĻĒāĻĄāĻŧ⧇, āφāϰ āϚāĻžāϝāĻŧ āĻ—āĻĄāĻŧ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋāϗ⧁āϞ⧋, input-āĻāϰ āĻ•ā§āϰāĻŽā§‡āĨ¤ āĻļ⧇āώ reading āύāĻž āφāϏāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ—āĻĄāĻŧ āϜāĻžāύāĻžāϰ āωāĻĒāĻžāϝāĻŧ āύ⧇āχ, āϤāĻžāχ āϏāĻŦāϗ⧁āϞ⧋ āĻāĻ•āϟāĻž vector-āĻ āϰāĻžāĻ–ā§‹, āφāϰ āĻ“āϟāĻžāϰ āωāĻĒāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧁āχāĻŦāĻžāϰ āĻšāĻžāρāĻŸā§‹āĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ n, āϤāĻžāϰāĻĒāϰ n-āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. āĻāĻ• āϞāĻžāχāύ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻžāύ, āϝ⧇āϟāĻž āĻ—āĻĄāĻŧ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ (āĻ—āĻĄāĻŧ⧇āϰ āϏāĻŽāĻžāύ āĻšāϞ⧇ āϚāϞāĻŦ⧇ āύāĻž), input-āĻāϰ āĻ•ā§āϰāĻŽā§‡, āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž āĻ•āϰ⧇ spaceāĨ¤ āĻāĻ•āϟāĻžāĻ“ āĻŦ⧇āĻļāĻŋ āύāĻž āĻšāϞ⧇ print āĻ•āϰ⧋ noneāĨ¤

Constraints. 1 <= n <= 100000āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž -1000000 āĻĨ⧇āϕ⧇ 1000000-āĻāϰ āĻŽāĻ§ā§āϝ⧇āĨ¤

Sample. Input 5 āφāϰ 30 10 25 40 20 āĻĻāĻŋāϞ⧇ 30 40āĨ¤ āĻ—āĻĄāĻŧ 25, āφāϰ 25 āϤ⧋ āύāĻŋāĻœā§‡āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āύāĻžāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> temps(n);
    for (int i = 0; i < n; i++) {
        cin >> temps[i];
    }

    // Pass 1: add every temperature into a long long.
    // Pass 2: print the ones above the average, or "none".

    return 0;
}

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧ āύāĻžāĨ¤ Hint: temps[i] * n-āϕ⧇ sum-āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰ⧋, āĻĻ⧁āĻŸā§‹āχ long long āĻšāĻŋāϏ⧇āĻŦ⧇, āϤāĻžāĻšāϞ⧇ āϕ⧋āύ⧋ āĻ­āĻ—ā§āύāĻžāĻ‚āĻļāχ āϞāĻžāĻ—āĻŦ⧇ āύāĻžāĨ¤ āϏāĻŦ āĻŽāĻžāύ āϏāĻŽāĻžāύ āĻšāϞ⧇ print āĻšāĻŦ⧇ noneāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ŠāĻ•āĻ āĻŋāύ

Kenji-āϰ playlist āϘ⧁āϰ⧇ āϘ⧁āϰ⧇ āĻŦāĻžāĻœā§‡āĨ¤ āĻ“ āφāϗ⧇ k āĻĒāĻĄāĻŧ⧇, āϤāĻžāϰāĻĒāϰ input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ—āĻžāύ⧇āϰ āύāĻŽā§āĻŦāϰāĨ¤ āĻ“ āĻĻ⧇āĻ–āϤ⧇ āϚāĻžāϝāĻŧ, index k-āĻāϰ āĻ—āĻžāύ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāϞ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻž āϕ⧋āύ āĻ•ā§āϰāĻŽā§‡ āĻŦāĻžāϜāĻŦ⧇āĨ¤ k āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻšāϞ⧇ āĻ—ā§‹āύāĻž āφāĻŦāĻžāϰ āĻāĻ• āĻĒāĻžāĻ• āϘ⧁āϰ⧇ āφāϏ⧇āĨ¤

Input. k, āϤāĻžāϰāĻĒāϰ input āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ—āĻžāύ⧇āϰ āύāĻŽā§āĻŦāϰāĨ¤

Output. āĻāĻ• āϞāĻžāχāύ⧇ āĻ—āĻžāύāϗ⧁āϞ⧋, 0 āĻĨ⧇āϕ⧇ āĻ—ā§‹āύāĻž index k āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇, āĻļ⧇āώ⧇ āĻĒ⧌āρāϛ⧇ āφāĻŦāĻžāϰ āĻļ⧁āϰ⧁āϤ⧇ āĻĢāĻŋāϰ⧇, āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž āĻ•āϰ⧇ spaceāĨ¤

Constraints. 0 <= k <= 1000000000āĨ¤ 1 āĻĨ⧇āϕ⧇ 100000āϟāĻž āĻ—āĻžāύāĨ¤

Sample. Input 7 āφāϰ 11 12 13 14 15 āĻĻāĻŋāϞ⧇ 13 14 15 11 12āĨ¤ āĻĒāĻžāρāϚāϟāĻž āĻ—āĻžāύ⧇āϰ āĻŦ⧃āĻ¤ā§āϤ⧇ āϏāĻžāϤ āϧāĻžāĻĒ āĻšāĻžāρāϟāĻž āĻŽāĻžāύ⧇ āφāϏāϞ⧇ āĻĻ⧁āχ āϧāĻžāĻĒāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    long long k;
    cin >> k;
    vector<int> songs;
    int s;
    while (cin >> s) {
        songs.push_back(s);
    }

    // Print songs.size() songs, starting at index k % songs.size(),
    // wrapping back to index 0 after the last one.

    return 0;
}

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧ āύāĻžāĨ¤ Lesson āϝ⧇ āĻ•āĻĨāĻžāϟāĻž āĻļ⧁āϧ⧁ āχāĻ™ā§āĻ—āĻŋāϤ⧇ āĻŦāϞ⧇āϛ⧇: index (k + i) % n āϏāĻŦāϏāĻŽāϝāĻŧ 0 āĻĨ⧇āϕ⧇ n - 1-āĻāϰ āĻŽāĻ§ā§āϝ⧇āχ āĻĒāĻĄāĻŧ⧇, āϤāĻžāχ āĻ•āĻ–āύ⧋ āĻļ⧇āώ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻĒāĻĄāĻŧāĻŦ⧇ āύāĻžāĨ¤

Run in Compiler

āϏāϚāϰāĻžāϚāϰ āϝ⧇ āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āφāϏ⧇

  • Vector āĻ•āĻŋ C array-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āϧ⧀āϰ?

    v[i] āĻĒāĻĄāĻŧāϤ⧇ āĻ–āϰāϚ array-āĻāϰ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻĒāĻĄāĻŧāĻžāϰ āϏāĻŽāĻžāύ: āĻāĻ•āϟāĻž address āĻšāĻŋāϏāĻžāĻŦ, āφāϰ āĻāĻ•āϟāĻž readāĨ¤ āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻ–āϰāϚ āĻļ⧁āϧ⧁ āĻŦāĻĄāĻŧ āĻšāĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ, āφāϰ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— push_back āϤ⧋ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻĢāĻžāρāĻ•āĻž āĻŦāĻžāĻ•ā§āϏ āĻ­āϰ⧇āĨ¤ Lesson 05 āĻāϟāĻž āĻŽā§‡āĻĒ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇āĨ¤

  • malloc-āĻāϰ memory-āϰ āĻŽāϤ⧋ vector-āϕ⧇āĻ“ āĻ•āĻŋ āφāĻŽāĻžāϕ⧇ free āĻ•āϰāϤ⧇ āĻšāϝāĻŧ?

    āύāĻžāĨ¤ āϝ⧇ block-āĻ vector-āϟāĻž declare āĻ•āϰāĻž, āϤāĻžāϰ closing brace-āĻ āĻĒ⧌āρāĻ›āĻžāϞ⧇, āĻŽāĻžāύ⧇ vector-āĻāϰ scope āĻļ⧇āώ āĻšāϞ⧇, āĻ“ āύāĻŋāĻœā§‡āϰ memory āύāĻŋāĻœā§‡āχ free āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϭ⧁āϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āĻŽāϤ⧋ āϕ⧋āύ⧋ free āύ⧇āχ, āĻĻ⧁āχāĻŦāĻžāϰ call āĻ•āϰāĻžāϰ āĻŽāϤ⧋āĻ“ āύāĻžāĨ¤

  • Capacity 4 āĻĨ⧇āϕ⧇ 5 āύāĻž āĻšāϝāĻŧ⧇ 8 āĻšāϞ⧋ āϕ⧇āύ?

    āĻāĻ• āĻ•āϰ⧇ āĻŦāĻžāĻĄāĻŧāĻžāϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž push_back-āĻ āϏāĻŦ element copy āĻ•āϰāϤ⧇ āĻšāϤ⧋āĨ¤ āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āĻ•āϰāϞ⧇ copy āϖ⧁āĻŦ āĻ•āĻŽāχ āϞāĻžāϗ⧇, āϤāĻžāχ āĻ—āĻĄāĻŧ āĻ–āϰāϚ constant āĻĨāĻžāϕ⧇āĨ¤ āĻ•āϤ āϗ⧁āĻŖ āĻŦāĻžāĻĄāĻŧāĻŦ⧇, standard āϏ⧇āϟāĻž āĻŦāϞ⧇ āύāĻž; GCC-āϰ library 2 āϗ⧁āĻŖ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ, āωāĻĒāϰ⧇āϰ program āϝ⧇āĻŽāύ print āĻ•āϰ⧇āϛ⧇āĨ¤

  • Vector āĻ•āĻŋ string āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇, āĻŦāĻž āĻ…āĻ¨ā§āϝ vector?

    āĻĒāĻžāϰ⧇āĨ¤ vector<string> āϰāĻžāϖ⧇ āĻļāĻŦā§āĻĻ, āφāϰ vector<vector<int>> āϰāĻžāϖ⧇ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž āϏāĻžāϰāĻŋāĨ¤ Lesson 03 āĻ āĻŋāĻ• āĻāĻ­āĻžāĻŦ⧇āχ āĻāĻ•āϟāĻž grid āĻŦāĻžāύāĻžāĻŦ⧇āĨ¤

āĻŽā§‚āϞ āĻ•āĻĨāĻž

  • Vector āĻšāϞ⧋ āĻāĻ•āχ type-āĻāϰ element-āĻāϰ āĻāĻ• āϏāĻžāϰāĻŋ, āĻāĻ•āϟāĻžāχ block-āĻ, āφāϰ push_back āĻ“āϟāĻžāϕ⧇ āĻŦāĻĄāĻŧ āĻ•āϰ⧇, āϤāĻžāχ āϗ⧁āύāϤāĻŋ āφāϗ⧇ āĻĨ⧇āϕ⧇ āϜāĻžāύāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχāĨ¤
  • āĻ—ā§‹āϞ bracket āĻĻ⧇āϝāĻŧ āϗ⧁āύāϤāĻŋ (v(5) āĻŽāĻžāύ⧇ āĻĒāĻžāρāϚāϟāĻž 0), braces āĻĻ⧇āϝāĻŧ āϤāĻžāϞāĻŋāĻ•āĻž (v{5} āĻŽāĻžāύ⧇ āĻāĻ•āϟāĻžāχ 5)āĨ¤
  • Size āĻšāϞ⧋ āĻ•āϝāĻŧāϟāĻž āφāϛ⧇, capacity āĻšāϞ⧋ āĻ•āϤāϟāĻž āϜāĻžāϝāĻŧāĻ—āĻž āφāϛ⧇; block āĻ­āϰ⧇ āϗ⧇āϞ⧇ āĻšāϝāĻŧ reallocation, āφāϰ āϤāĻžāϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž element copy āĻšāϝāĻŧāĨ¤
  • Index āϚāϞ⧇ 0 āĻĨ⧇āϕ⧇ v.size() - 1, āφāϰ v[i] āĻ•āĻŋāϛ⧁āχ check āĻ•āϰ⧇ āύāĻž, āϤāĻžāχ v[v.size()] āĻāĻ•āϟāĻž āύ⧀āϰāĻŦ bugāĨ¤
  • size() unsigned: āĻ–āĻžāϞāĻŋ vector-āĻ v.size() - 1 āĻšāϞ⧋ 18446744073709551615, āϤāĻžāχ āφāϗ⧇ empty() check āĻ•āϰ⧋āĨ¤
  • āφāϰāĻ“ āĻ—āĻ­ā§€āϰ⧇ āϝ⧇āϤ⧇ āϚāĻžāχāϞ⧇: Under the Hood, vector āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ āφāϰ āϤāĻžāϤ⧇ āϕ⧀ āϕ⧀ āĻ­āĻžāϙ⧇ (Pro)āĨ¤

āĻāϰāĻĒāϰ Kenji-āϰ program āĻāĻ•āϟāĻž loop-āĻ āĻŦāĻžāϰāĻŦāĻžāϰ vector-āĻāϰ āϏāĻžāĻŽāύ⧇ insert āĻ•āϰ⧇, āφāϰ āϖ⧁āĻŦ āϧ⧀āϰ⧇ āϚāϞ⧇āĨ¤ āϕ⧇āύ, āϏ⧇āϟāĻž āĻŦ⧇āϰ āĻ•āϰāϤ⧇ lesson 02 āĻĒā§āϰāϤāĻŋāϟāĻž operation-āĻāϰ āĻ–āϰāϚ āĻŽā§‡āĻĒ⧇ āĻĻ⧇āĻ–āĻŦ⧇āĨ¤

lesson ā§§ āĻļ⧇āώ

āĻļ⧇āώ āĻšāϞ⧇ āϚāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻž: vector-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž operation, āĻāĻ•āϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇, āĻ–āϰāϚāϏāĻš