Topics: Introduction to Vectors
Group work: Group work is allowed for the labs, but each person must do their own coding and each person must turn in an assignment. Copying other peoples' code / code files is not allowed. Copied assignments will receive 0% for everybody involved.
Assignments must build: Assignments that don't build will automatically just be given a flat 50% score. I may still give feedback on what went wrong, and 50% is better than 0%, so turn in something - but ideally, make sure it builds.
In C++, the basic array doesn't let you resize it and it doesn't keep track of the amount of elements within it. You can make a dynamic array using pointers, but you still have to manually manage that data and keep a variable to keep track of the amount of item stored in it vs. the size of the array.
In other languages, it is quite common to have some sort of resizable array
class as a standard part of the language. In Java and C#, we have ArrayList
,
in Python we just use a List.In C++, we have to look at the Standard Template Library (STL) to find
some pre-made data structures like this.
Here we will be looking at the vector
class. The STL Vector
is basically a Wrapper for a Dynamic Array. It handles
the resizing for us, and gives us a .size()
function to
track how many items are stored in it, freeing us up to worry about
other design issues.
This Data Structures class is all about writing these storts of structures, but before we get into the nitty-gritty of making our own Vector-like class we can look at how it can be used from the outside.
You can find the vector documentation, function descriptions, and sample code here: http://www.cplusplus.com/reference/vector/vector/
The vector
is a templated class. If you didn't cover templates
in a previous class, it is a way we can write one container class that
deals with any data type. To declare a vector of strings, it would look like this:
vector<string> myStrings;
In the list of functions, value_type
is whatever data type
the vector is storing.
Function name | Return type | Parameters | Description |
---|---|---|---|
push_back |
void |
const value_type& val |
Push the |
pop_back |
void |
Removes the last element, stored at the end of the vector's internal array (at index size-1) |
|
clear |
void |
Remove all elements from the array. |
|
front |
value_type |
Returns the first item in the vector's array (at position 0). |
|
back |
value_type |
Returns the last item in the vector's array (at position size-1). |
|
at |
value_type |
size_type n |
Returns the item in the vector's array at the given index. |
operator[] |
value_type |
size_type n |
Same as the |
size |
size_type |
Returns the amount of items stored in the vector. |
In your Student Repository, open the CS250-Lab05-STLVector project. It will have the following files:
This code includes a program that deals with a vector and offers several options. It also has simple unit tests to check the functionality of each.
You will utilize the STL vector documentation to help implement each function.
************************************ ** Vector ** ************************************ 1. Set prerequisites 2. Remove last item 3. Clear the list 4. Get first prerequisite 5. Get last prerequisite 6. Look at item 7. Display all items 8. Quit Run which function?
You will implement the functions:
void GetClassList(vector<string>& classList)
void RemoveLastItem(vector<string>& classList)
void ClearList(vector<string>& classList)
string GetFirst(vector<string>& classList)
string GetLast(vector<string>& classList)
string GetItem(vector<string>& classList, int index)
string GetAllItems(vector<string>& classList)
Add the following items to the classList using .push_back(): cs134, cs200, cs235, cs250, cs210, and cs211.
Remove the last ("back") item from the classList passed in using .pop_back()
Clear all the items out of classList using .clear()
Return the first ("front") item from classList using .front()
Return the last ("back") item from classList using .back()
Get a specific item from the list at some index, using The subscript operator [] or .at()
Build a string with all the class names, separated by whitespace. You will also use The subscript operator [] or .at() here, as well as .size() with a for loop to get all vector values and concatenate each one to your string.
cout
statements -
it must return a string
!
Here the program will give you a menu of options to select, each one modifies the vector object in the program.
************************************ ** Vector ** ************************************ 1. Set prerequisites 2. Remove last item 3. Clear the list 4. Get first prerequisite 5. Get last prerequisite 6. Look at item 7. Display all items 8. Quit Run which function?
Turn in your functions.cpp file - no other files are necessary.