Titik Masa
Wakili detik dalam masa
Titik Masa ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah Titik Masa?
std::chrono::time_point mewakili detik tertentu yang diukur dari epok sesuatu jam. Ia menggabungkan jam dengan tempoh sejak epok tersebut.
- Dikembalikan oleh
clock::now(). - Penolakan dua titik masa menghasilkan tempoh.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
time_point<steady_clock> tp = steady_clock::now();
std::cout << "Captured a moment: " << (tp.time_since_epoch().count() != 0) << '\n';
return 0;
}time_since_epoch
Setiap titik masa boleh melaporkan jaraknya dari epok jam dengan time_since_epoch(), yang mengembalikan tempoh.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
auto d = tp.time_since_epoch();
auto s = duration_cast<seconds>(d);
std::cout << "Positive epoch seconds: " << (s.count() > 0) << '\n';
return 0;
}Menolak Titik Masa
Menolak satu titik masa daripada titik masa yang lain menghasilkan tempoh, iaitu masa yang berlalu antara kedua-dua detik tersebut.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto a = steady_clock::now();
auto b = steady_clock::now();
auto diff = b - a;
std::cout << "Elapsed ns is non-negative: " << (diff.count() >= 0) << '\n';
return 0;
}Menambah Tempoh
Menambah tempoh pada titik masa menghasilkan titik masa baharu pada masa hadapan (atau masa lalu jika melakukan penolakan). Beginilah cara anda mengira had masa.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
using namespace std::chrono_literals;
auto now = steady_clock::now();
auto deadline = now + 10s;
std::cout << "Deadline is after now: " << std::boolalpha << (deadline > now) << '\n';
return 0;
}Membandingkan Titik Masa
Titik masa daripada jam yang sama menyokong semua operator perbandingan, membolehkan anda memeriksa sama ada satu detik berlaku sebelum atau selepas detik yang lain.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto first = steady_clock::now();
auto second = steady_clock::now();
std::cout << std::boolalpha << (first <= second) << '\n';
return 0;
}Titik Masa Khusus Jam
Sesuatu titik masa terikat pada jenis jamnya. Anda tidak boleh membandingkan titik masa system_clock dengan titik masa steady_clock secara langsung kerana epok kedua-duanya berbeza.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
system_clock::time_point sys = system_clock::now();
steady_clock::time_point mono = steady_clock::now();
std::cout << "Both captured: " << ((sys.time_since_epoch().count() != 0) && (mono.time_since_epoch().count() != 0)) << '\n';
return 0;
}Menukar kepada time_t
system_clock::to_time_t menukar titik masa kalendar kepada time_t gaya C yang boleh anda format untuk paparan manusia.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
std::time_t t = system_clock::to_time_t(tp);
std::cout << "time_t is positive: " << (t > 0) << '\n';
return 0;
}from_time_t
Operasi sebaliknya, system_clock::from_time_t, membina titik masa daripada nilai time_t seperti cap masa yang disimpan.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
std::time_t t = 1000000000;
auto tp = system_clock::from_time_t(t);
auto back = system_clock::to_time_t(tp);
std::cout << "Round trip ok: " << std::boolalpha << (back == t) << '\n';
return 0;
}Mengira Had Masa
Corak yang biasa: tangkap now(), tambah tempoh tamat masa, kemudian bandingkan dengan now() yang baharu untuk melihat sama ada had masa telah berlalu.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
using namespace std::chrono_literals;
auto deadline = steady_clock::now() + 0ms;
auto current = steady_clock::now();
bool expired = current >= deadline;
std::cout << "Expired: " << std::boolalpha << expired << '\n';
return 0;
}Ketepatan Titik Masa
Ketepatan titik masa sepadan dengan jenis tempoh jamnya. Anda boleh menukar titik masa kepada unit yang lebih kasar menggunakan time_point_cast.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
auto secs_tp = time_point_cast<seconds>(tp);
std::cout << "Cast preserved sign: " << (secs_tp.time_since_epoch().count() > 0) << '\n';
return 0;
}Menyimpan Cap Masa
Untuk menyimpan sesuatu detik secara kekal, tukarkannya kepada kiraan saat sejak epok, simpan integer tersebut, dan bina semula titik masa itu kemudian apabila diperlukan.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
long long stored = duration_cast<seconds>(tp.time_since_epoch()).count();
std::cout << "Stored value usable: " << (stored > 0) << '\n';
return 0;
}Semakan Pantas
Uji pemahaman anda tentang aritmetik titik masa.
Ringkasan
Anda telah mempelajari bahawa time_point:
- menandakan detik tertentu berbanding dengan epok jam
- melaporkan ofsetnya melalui
time_since_epoch() - menyokong penambahan, penolakan tempoh dan perbandingan
- boleh ditukar kepada dan daripada
time_tuntuk paparan serta penyimpanan
Seterusnya, anda akan menggunakan alat ini untuk menanda aras dan mengukur prestasi kod.
Pelajari C++ dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Titik Masa” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Titik Masa”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Titik Masa”?
Wakili detik dalam masa Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Titik Masa” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.