#include <chrono>
#include <iostream>
#include <vector>
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
template <unsigned len> struct Char { char data[len]; };
//---------------------------------------------------------------------------
struct Order { unsigned customer,item,date; unsigned price; Char<100> comment; };
//---------------------------------------------------------------------------
struct Orders {
   vector<Order> data;

   void insert(Order&& order);
};
//---------------------------------------------------------------------------
void Orders::insert(Order&& order)
{
   data.push_back(order);
}
//---------------------------------------------------------------------------
void createData(Orders& orders)
{
   for (unsigned index=0;index!=10000000;++index) {
      Order o{index%1000,(7*index)%997,2013,1+(index%3),{'\0'}};
      orders.insert(move(o));
   }
}
//---------------------------------------------------------------------------
void sumPrice(Orders& orders)
{
   auto start=chrono::high_resolution_clock::now();

   unsigned sum=0;
   for (auto& o:orders.data)
      sum+=o.price;

   auto stop=chrono::high_resolution_clock::now();
   cout << "result: " << sum << endl
        << "query time: " << chrono::duration_cast<chrono::microseconds>(stop-start).count() << endl;
}
//---------------------------------------------------------------------------
int main()
{
   Orders orders;
   createData(orders);
   sumPrice(orders);
}
//---------------------------------------------------------------------------
// result: 1999999
// query time: 63098 microseconds
