# Two-dimensional vectors

This lesson contains approximately 22 minutes of video content.

### Two-dimensional std::vectors

#### Activity: Max subvector sum

Activity Prompt:

In this problem, you will declare and define the function `LargestVectorSum` in the header file `solution.hpp` and source file `solution.cc` respectively, using the C++ conventions introduced in the daily lessons. Your `LargestVectorSum` function must be defined with single parameter, a two-dimensional `std::vector` of `int`s. `LargestVectorSum` will return an object typed `LargestSumPair`. We define this structured type in `largest-sum-pair.hpp`; do not change that definition. Now that the return type and signature of `LargestVectorSum` have been specified, let's discuss what this function is to do and how the returned object is to be composed.

`LargestVectorSum` will examine the non-rectangular two-dimensional vector of integers passed to it subvector-by-subvector. For clarity:

``````std::vector<std::vector<int>> my_2d_vector{
{1, 2, 4}, {4, 1, -1}, {6, 8, -10, -9}, {-1}}; // declares + initializes a non-rectangular 2D std::vector of ints
my_2d_vector.at(0);  // returns the subvector {1, 2, 4}``````
Your function will track the index into the subvector whose contents sum to the largest (most positive) integer value and record what that sum was. Keep in mind that the subvector may have positive and negative values. Since the two-dimensional vector is non-rectangular, you cannot assume that the subvectors contain an equal number of elements: the number of elements stored in one subvector can (and will) differ from one another. If more than one subvector sums to the same value and that value is the largest sum, record the subvector with the smaller index. What does a smaller index mean? Given a two-dimensional vector indexed as `vect.at(subvector_idx).at(subvector_ele_idx)`, we mean the subvector residing at the smaller value of `subvector_idx`. Once you're finished examining the two-dimensional vector, create a new `LargestSumPair` object, initializing the data member `index` with the index to the subvector whose contents sum to the largest (most positive) integer value and `sum` with the sum calculated for that subvector. Assume the two-dimensional vector passed to your function will have at least one subvector.

• `solution.hpp`
• `solution.cc`