C++ Academy · Pelajaran

Mengapa string_view

Elakkan penyalinan rentetan

Pelajaran 1 daripada 413 langkah

Mengapa string_view ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 1 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.

Kos Penyalinan

Meluluskan std::string mengikut nilai menyalin seluruh penimbal. Untuk akses baca sahaja, penyalinan itu merupakan kerja yang sia-sia. std::string_view ialah paparan ringan yang tidak memiliki data, hanya penuding dan panjang. Sertakan <string_view>.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "hello";
    std::cout << sv << " len=" << sv.size() << "\n";
}

Kandungan Sesuatu Paparan

Sesuatu string_view hanya menyimpan penuding kepada aksara sedia ada dan panjang. Ia tidak memiliki atau menyalin data.

#include <iostream>
#include <string>
#include <string_view>
int main() {
    std::string s = "world";
    std::string_view sv = s; // views s, no copy
    std::cout << sv << "\n";
}

Parameter Baca Sahaja

Menerima std::string_view bermakna fungsi anda boleh berfungsi dengan std::string, literal rentetan dan tatasusunan char tanpa menyalin mana-mana daripadanya.

#include <iostream>
#include <string_view>
void greet(std::string_view name) {
    std::cout << "Hi, " << name << "\n";
}
int main() {
    greet("Ada");
    greet(std::string("Bob"));
}

Tiada Peruntukan Memori

Membina paparan tidak pernah memperuntukkan memori, jadi paparan itu murah untuk disalin dan dihantar mengikut nilai.

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "constant text";
    std::string_view b = a; // trivial copy
    std::cout << (a == b) << "\n";
}

Subrentetan Berkos Rendah

substr pada sesuatu paparan memulangkan paparan lain ke dalam memori yang sama; tiada aksara disalin.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abcdef";
    std::cout << sv.substr(2, 3) << "\n"; // cde
}

Perbandingan untuk Prestasi

Untuk fungsi yang hanya memeriksa teks, string_view mengelakkan peruntukan timbunan dan penyalinan, yang penting dalam gelung panas dan penghuraian.

Panjang dan Pengindeksan

Sesuatu paparan menyokong antara muka yang biasa: size(), empty(), pengindeksan dan lelaran berasaskan julat.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "C++";
    for (char c : sv) std::cout << c << "-";
    std::cout << "\n" << sv.size() << "\n";
}

Paparan Baca Sahaja

Anda tidak boleh mengubah aksara melalui string_view; ia hanya memberikan akses baca. Untuk mengubahnya, anda memerlukan rentetan yang memiliki data.

Daripada Literal kepada Paparan

Literal rentetan ditukar kepada paparan secara terus, menjadikan penghantaran teks malar sangat murah.

#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
    auto sv = "literal"sv;
    std::cout << sv.size() << "\n";
}

Bukan Pengganti Rentetan

Gunakan std::string apabila anda perlu memiliki, menyimpan atau mengubah teks. Gunakan std::string_view untuk parameter sementara yang hanya dibaca.

Peringatan tentang Jangka Hayat

Oleh sebab paparan tidak memiliki datanya, aksara asas mestilah mempunyai jangka hayat yang lebih panjang daripada paparan. Penyalahgunaan ini menyebabkan paparan tergantung, yang akan dibincangkan dalam pelajaran kemudian.

Semakan Ringkas

Semak pemahaman anda tentang tujuan string_view.

Ringkasan

Anda telah mempelajari sebab kewujudan string_view:

  • Ia ialah paparan yang tidak memiliki data, terdiri daripada penuding dan panjang.
  • Menerimanya mengelakkan penyalinan dan peruntukan memori untuk teks baca sahaja.
  • Boleh digunakan dengan rentetan, literal dan tatasusunan char.
  • Data yang dipaparkan mesti mempunyai jangka hayat yang lebih panjang daripada paparan.
Percuma untuk bermula

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 “Mengapa string_view” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Mengapa string_view”, 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 “Mengapa string_view”?

Elakkan penyalinan rentetan 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 1 daripada 4.

Berapa lamakah pelajaran “Mengapa string_view” 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.

Semua pelajaran dalam kursus ini

  1. Mengapa string_view
  2. Mencipta View
  3. Perangkap dan Jangka Hayat
  4. Algoritma Rentetan
← Kembali ke C++ Academy