Tôi có một chương trình mẫu chứa 6 timepoints sử dụng high_resolution_clock::now()
từ tiêu đề chrono
tiêu đề. Tôi có sự khác biệt b/w mỗi người trong số họ dẫn đến 3 sự khác biệt và đánh giá họ là auto duration1 = std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();
đến micro giây.không có chức năng phù hợp cho cuộc gọi đến tiêu chuẩn :: vector <std::tuple> push_back
Tôi có một biến khác có tên thời lượng được chỉ định như sau: auto durations = std::make_tuple(duration1,duration2,duration3);
chứa chênh lệch thời gian trước đó.
tôi phải đẩy tuple này vào một vector, vì vậy tôi đã giới thiệu std::vector<std::tuple<std::chrono::microseconds,std::chrono::microseconds,std::chrono::microseconds>> list;
Tuy nhiên về việc sử dụng list.push_back(durations);
tôi nhận được một lỗi như:
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);
tôi đã cố gắng để tìm kiếm về std::chrono::microseconds
và std::chrono::duration
khác thứ here nhưng không thành công trong việc khắc phục vấn đề.
Tôi biết điều này có liên quan đến sự sơ suất của hệ thống kiểu, nhưng tôi không thể xác định được lỗi đó. Mọi trợ giúp sẽ được đánh giá cao, & đây là 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;
}
cũng xin cảm ơn vì công việc của bạn trên cpp :) –