Ho un programma di esempio contenente 6 punti utilizzando high_resolution_clock::now()
dall'intestazione standard chrono
. Prendo le differenze b/n ognuna di esse risultando in 3 differenze e le casta come auto duration1 = std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();
in microsecondi.nessuna funzione di corrispondenza per la chiamata a std :: vector <std::tuple> push_back
Ho un'altra variabile denominata durate che viene assegnata come segue: auto durations = std::make_tuple(duration1,duration2,duration3);
contenente differenze di punto di tempo precedenti.
devo spingere questo tupla in un vettore, così ho introdotto std::vector<std::tuple<std::chrono::microseconds,std::chrono::microseconds,std::chrono::microseconds>> list;
Tuttavia sull'utilizzo list.push_back(durations);
ottengo un errore come:
prog.cpp: In function 'int main()':
prog.cpp:36:29: error: no matching function for call to 'std::vector<std::tuple<std::chrono::duration<long long int, std::ratio<1ll, 1000000ll> >, std::chrono::duration<long long int, std::ratio<1ll, 1000000ll> >, std::chrono::duration<long long int, std::ratio<1ll, 1000000ll> > > >::push_back(std::tuple<long long int, long long int, long long int>&)'
list.push_back(durations);
Ho provato a cercare su std::chrono::microseconds
e altre std::chrono::duration
roba here ma non ha avuto successo nel correggere il problema.
So che questo ha qualcosa a che fare con la mia negligenza del sistema di tipi, ma non riesco a individuare quell'errore. Qualsiasi aiuto sarebbe apprezzato, & qui è ideone link.
#include <iostream>
#include <chrono>
#include <vector>
#include <tuple>
using namespace std;
using namespace std::chrono;
void function()
{
long long number = 0;
for(long long i = 0; i != 2000000; ++i)
{
number += 5;
}
}
int main()
{
high_resolution_clock::time_point t1 = high_resolution_clock::now();
high_resolution_clock::time_point t3 = high_resolution_clock::now();
high_resolution_clock::time_point t5 = high_resolution_clock::now();
function();
high_resolution_clock::time_point t2 = high_resolution_clock::now();
high_resolution_clock::time_point t4 = high_resolution_clock::now();
high_resolution_clock::time_point t6 = high_resolution_clock::now();
auto duration1 = std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();
auto duration2 = std::chrono::duration_cast<std::chrono::microseconds>(t4 - t3).count();
auto duration3 = std::chrono::duration_cast<std::chrono::microseconds>(t6 - t5).count();
auto durations = std::make_tuple(duration1,duration2,duration3);
std::vector<std::tuple<std::chrono::microseconds,std::chrono::microseconds,std::chrono::microseconds>> list;
list.push_back(durations);
cout << duration1 << " -- "<< duration2 << " -- "<< duration3 << " -- ";
return 0;
}
anche io vorrei ringraziarvi per il vostro lavoro su cpp :) –