10.6. Vector functionsΒΆ
The best feature of a vector is its resizeability. 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 he inputs -1
, and then display them. In such a case,
we do not know the size of the vector beforehand. So we need wish 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>
using namespace std;
int main() {
vector<int> values;
int c, i;
size_t len;
cin >> c;
while (c != -1) {
values.push_back(c);
cin >> c;
}
len = values.size();
for (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 make_even
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;