15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.
Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.
std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.
The vector copy owns a separate sequence. Appending to it leaves the original length at 2 while the copy has 3. This differs from copying a reference to a shared object.
#include <iostream>
#include <vector>
#include <string>
#include <cassert>
int main() {
std::vector<std::string> plan{"Read", "Test"};
auto copy = plan;
copy.push_back("Explain");
std::cout << plan.size() << " " << copy.size() << "\n";
}
Expected result: 2 3
Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.