エラーが発生した場合は、それも含めることをお勧めします。
hours[hours.size()]
具体的には、ベクトルはゼロベースのインデックスであるため、範囲外のインデックスを作成していると思います。
STL コンテナーには、境界内にとどまるのに役立つ気の利いたイテレーターがあります。
int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total(0);
for (std::vector<int>::const_iterator i(hours.begin()); i != hours.end(); ++i)
total += *i;
STL には、これらの反復子を使用して一般的な処理を行うアルゴリズムもあります。
#include <numeric>
int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total = std::accumulate(hours.begin(), hours.end(), 0);
もちろん、独自のループをロールすることもできます。
int h[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
std::vector<int> hours(h, h+12);
int total(0);
for (int i(0); i < int(hours.size()); ++i)
total += hours[i];
上記のすべては、合計で同じ結果になりますが、方法が少し異なるだけです。彼らが言うように、猫の皮を剥ぐ方法は常に複数あります。