CS101x S450A Template Class Vector Part 1 IIT Bombay 1
CS101x S450A Template Class Vector Part 1 IIT Bombay 1
Computer Programming
Dr. Deepak B Phatak
Dr. Supratik Chakraborty
Department of Computer Science and Engineering
IIT Bombay
Session : Template Class “vector”
#include <iostream>
#include <vector>
using namespace std;
int main() { 0 20
vector<int> intVec;
vector<float> floatVec(20);
vector<char> charVec(5, ‘a’);
cout << intVec.size() << “ “ << floatVec.size() << endl;
for (int i = 0; i < 5; i++) {cout << charVec[i];}
cout << endl; return 0;
} aaaaa
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 6
Accessing Elements using [] and at
IIT Bombay
#include <iostream>
intVec[100] vs intVec.at(100):
#include <vector>
using namespace std;
Illegal memory/garbage access
int main() { vs
vector<int> intVec(5); out_of_range exception
int index;
for (int i = 0; i < 5; i++) { intVec[i] = i; } index: 3
cout << “Give an index: “; Value at index 3 is 3
cin >> index;
cout << “Value at index “ << index << “ is “ << intVec.at(index) << endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std; Front element is: 0
int main() { Back element is: 4
vector<int> intVec(5);
for (int i = 0; i < 5; i++) { intVec.at(i) = i;}
cout << “Front element is: “ << intVec.front() << endl;
cout << “Back element is: “ << intVec.back() << endl;
return 0;
}
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 8
Appending Element to a Vector
IIT Bombay
#include <iostream>
#include <vector> Initial size: 0
using namespace std;
int main() {
Final size: 5
vector<int> intVec;
cout << “Initial size: “ << intVec.size() << endl;
for (int i = 0; i < 5; i++) { intVec.push_back(i); }
cout << “Final size: “ << intVec.size() << endl;
for (int i = 0; i < 5; i++) { cout << intVec.at(i) << “ “; }
return 0;
} 01234
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 9
Deleting Element From End of a Vector
IIT Bombay
#include <iostream>
#include <vector>
using namespace std;
int main() {
Size after
vector<int> intVec; pop back: 4
cout << “Initial size: “ << intVec.size() << endl;
for (int i = 0; i < 5; i++) { intVec.push_back(i); }
cout << “Final size: “ << intVec.size() << endl; 01 23
intVec.pop_back();
cout << “Size after pop back: “ << intVec.size() << endl;
for (int i = 0; i < 4; i++) { cout << intVec.at(i) << “ “;}
return 0;
}
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 10
Recall: C++ Iterator
IIT Bombay
#include <iostream>
begin(), end()
#include <vector>
using namespace std;
member functions
int main() {
vector<int> intVec;
for (int i = 0; i < 5; i++) { intVec.push_back(i); }
intVec.push_back(-1);
for (vector<int>::iterator it = intVec.begin(); it != intVec.end(); it++) {
cout << *it << “ “;
}
return 0; 0 1 2 3 4 -1
}
int main() {
vector<int> intVec; 01234
for (int i = 0; i < 5; i++) { intVec.push_back(i); }
for (int i = 0; i < 5; i++) { cout << intVec.at(i) << “ “;} cout << endl;
vector<int>::iterator it = intVec.begin() + 2;
Size after
intVec.insert(it, 0);
cout << “Size after insert: “ << intVec.size() << endl; insert: 6
for (int i = 0; i < intVec.size(); i++) { cout << intVec.at(i) << “ “;} cout << endl;
it = intVec.begin + 3; intVec.erase(it);
cout << “Size after delete: “ << intVec.size() << endl;
for (int i = 0; i < intVec.size(); i++) { cout << intVec.at(i) << “ “;} cout << endl;
return 0;
} 010234
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 14
Inserting and Deleting Elements in the Middle
IIT Bombay
int main() {
vector<int> intVec;
for (int i = 0; i < 5; i++) { intVec.push_back(i); }
for (int i = 0; i < 5; i++) { cout << intVec.at(i) << “ “;} cout << endl;
vector<int>::iterator it = intVec.begin() + 2;
Size after
intVec.insert(it, 0);
cout << “Size after insert: “ << intVec.size() << endl; delete: 5
for (int i = 0; i < intVec.size(); i++) { cout << intVec.at(i) << “ “;} cout << endl;
it = intVec.begin + 3; intVec.erase(it);
cout << “Size after delete: “ << intVec.size() << endl;
for (int i = 0; i < intVec.size(); i++) { cout << intVec.at(i) << “ “;} cout << endl;
return 0;
} 01034
Dr. Deepak B. Phatak & Dr. Supratik Chakraborty, IIT Bombay 15
Resizing a “vector”
IIT Bombay