10.5. Vector functionsΒΆ
The best feature of a vector is its ability to resize.
A vector, once declared, can be resized from anywhere within the program.
Suppose we have a situation where we input numbers from the user and
store them in a vector till the input is -1
, and then display them.
In such a case, we do not know the size of the vector beforehand.
So we need a way add new values to the end of a vector as the user inputs them.
We can use then vector function push_back for that purpose.
Note
push_back
adds a specified element to the end of the vector, pop_back
removes element from the end of a vector.
#include <iostream>
#include <vector>
int main() {
std::vector<int> values;
int c;
cin >> c;
while (c != -1) {
values.push_back(c);
cin >> c;
}
size_t len = values.size();
for (size_t i = 0; i < len; i++) {
cout << values[i] << endl;
}
}
The active code below uses the push_back
function to add
even numbers less than or equal to 10 to the vector values
.
- 5
- Incorrect! This is the size of the vector before we ran the command.
- 6
- Correct!
- 7
- Incorrect!
- 8
- Incorrect! We are adding the element 3 to the end of the vector, not 3 elements!
Q-2: Let nums be the vector { 0, 1, 2, 3, 4 }. If we run the command nums.push_back(3)
, what will be returned by nums.size()
?
Construct the <code>make_even</code> function that loops through vec, adds 1 to any elements that are odd, and returns the new vector.
- 4 3 2 1 0
- we change the numbers in the first half of the vector before we copy them to the second half
- 4 3 2 3 4
- when
i
is 3 we copy fromend = 1
copying the values we already changed. - 0 1 2 3 4
- we change values in the second loop.
Q-4: What does the following code print?
1vector<int> numbers(5);
2int size = 5;
3for (int i = 0; i < size; ++i){
4 numbers[i] = i;
5}
6
7int end = 4;
8
9for (int i = 0; i < size; ++i){
10 numbers[i] = numbers[end];
11 end--;
12}
13
14for (int i = 0; i < size; ++i){
15 cout << numbers[i] << " ";
16}
17
18cout << endl;