Jadual Kandungan
第三章  字符串、向量和数组
标准库类型string
处理string对象中的字符
标准库类型vector
向vector对象中添加元素
其他vector操作
迭代器iterator
begin和end成员
标准容器迭代器运算符
Rumah pembangunan bahagian belakang Tutorial C#.Net 第三章C++:字符串string、向量vector和数组

第三章C++:字符串string、向量vector和数组

Aug 06, 2018 am 10:36 AM
c++

第二章介绍内置类型,本章介绍抽象数据类型库。 

- 其中stringvector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。

第三章  字符串、向量和数组

  • 头文件不应包含using声明。

标准库类型string

#include <string>using std::string
Salin selepas log masuk
  • 初始化string

    • 直接初始化(direct initialization)

    • 拷贝初始化(copy initialization):使用等号

      string s1;string s2(s1);string s2 = s2;string s3("hiya");string s3 = "hiya";string s4(10, &#39;c&#39;); //s4的内容是cccccccccc
      Salin selepas log masuk
  • string对象上的操作

    1. cout << s2. cin >> s         //将string对象读入s,遇到空白停止3. getline(is, s)   //从输入流is中读取一行赋给s(换行符被读取了,但被丢弃而没有赋给s),返回is4. s.empty()        //s为空返回true,否则返回false5. s.size()6. s[n]             //返回s中第n个字符的引用,位置n从0计起          
    7. s1 + s2          //返回s1和s2连接后的结果8. s1 = s29. s1 == s210. s1 != s211. <, <=, >, >=
    Salin selepas log masuk
    • 逻辑非运算符(!)

  • string::size_type类型:s.size()的返回值类型,是string类的配套类型。它是一个无符号类型的值,能够存放下任何string对象的大小。

  • 处理string对象中的字符

    • cctype头文件:对单个字符的判断或处理的函数

      isupper(c)      //c是大写字母时为真islower(c)tolower(c)      //如果c是大写字母,则输出对于的小写字母;否则原样输出toupper(c)isalpha(c)      //c是字母时为真isdigit(c)      //c是数字时为真isalnum(c)      //c是字母或数字时为真ispunct(c)      //c是标点符号时为真isspace(c)      //c是空白时为真(即c是空格、横向制表符、纵向制表符、回车符、换行符、进纸符的一种)iscntrl(c)      //c是控制字符时为真isgraph(c)      //c不是空格但可打印时为真isprint(c)      //c是可打印字符时为真(即c是空格或具有可视形式)isxdigit(c)     //十六进制数
      Salin selepas log masuk
    • 使用C++版本的C标准库头文件,形如name.h,C++++中这些文件命名为cname,内容一样,且头文件cname中定义的名字从属于命名空间std。

  • 范围for(range for)语句

for (declaration : expression)
    statement

例如:string str("some string");//每行输出str中的一个字符for(auto c : str)    cout << c <<endl;
Salin selepas log masuk

标准库类型vector

vector是一个类模板(class template)。vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。vector也常被称为容器(container).

  • 定义和初始化vector对象

vector<T> v1vector<T> v2(v1)vector<T> v2 = v1vector<T> v3(n, val)vector<T> v4(n)vector<T> v5{a,b,c...}vector<T> v5 = {a,b,c...}
Salin selepas log masuk
  • 列表初始化vector对象

vector<string> articles = {"a", "an", "the"};
Salin selepas log masuk
  • 向vector对象中添加元素

    运行时才知道vector对象中确切的个数:

    string word;vector<string> text;while (cin >> word) {
        text.push_back(word);
    }
    Salin selepas log masuk
    • vector对象能高效增长:vector能在运行时高效快速地添加元素。

    • 如果循环体内包含有向vector对象添加元素的语句,则不能使用++范围for++循环。

    • push_back:把一个值当成vector对象的尾元素“压到(push)”vector对象的“尾端(back)”。

      vector<int> v2;for(int i=0; i != 100; ++1)
          v2.push_back(i);
      Salin selepas log masuk
  • 其他vector操作

v.empty()
v.size()
v.push_back(t)
v[n]        //返回v中第n个位置上元素的引用v1 = v2v1 = {a,b,c...}v1 == v2v1 != v2
<, <=, >, >=
Salin selepas log masuk

迭代器iterator

一种通用机制:实现使用下标运算符访问string对象的字符或vector对象的元素。

类似指针类型,提供了对对象的间接访问。

  • begin和end成员

    //由编译器决定b、e的类型//b表示v的第一个元素,e表示v尾元素的下一个元素auto b = v.begin(), e = v.end();    //b、e类型相同
    Salin selepas log masuk
    • end成员返回的迭代器常被称作尾后迭代器(off-the-end iterator),或者简称尾迭代器。

    • 如果容器为空,则begin和end返回的都是尾后迭代器。

  • 标准容器迭代器运算符

*iter           返回迭代器iter所指元素的引用iter->men       解引用iter并获取钙元素的名为mem的成员,等价于(*iter).mem++iter--iteriter1 == iter2iter1 != iter2
Salin selepas log masuk
//将字符串首字母改成大写string s("some string");if (s.begin() != s.end()) {    auto it = s.begin();
    *it = toupper(*it);
}//将迭代器从一个元素移动到另一个元素,把字符串中第一个单词改为大写//注意,使用的是!=,而不是<for(auto it = s.begin(); it != s.end() && !isspace(*it); ++it)
    *it = toupper(*it);
Salin selepas log masuk
  • #### 迭代器类型

拥有迭代器的标准库使用iterator和const_iterator来表示迭代器的类型:

vector<int>::iterator it;           //it能读写vector<int>中的元素string::iterator it2;               //it2能读写string对象中的字符vector<int>::const_iterator it3;    //it3只能读元素,不能写元素string::const_iterator it4;         //it4只能读字符,不能写字符
Salin selepas log masuk

参考:C++Primer第五版

第二章介绍内置类型,本章介绍抽象数据类型库
- 其中stringvector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。

相关文章:

第一章C++:函数返回值、GNU编译器命令

第二章C++:变量和基本类型

Atas ialah kandungan terperinci 第三章C++:字符串string、向量vector和数组. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah peranan char dalam c strings Apakah peranan char dalam c strings Apr 03, 2025 pm 03:15 PM

Dalam C, jenis char digunakan dalam rentetan: 1. Simpan satu watak; 2. Gunakan array untuk mewakili rentetan dan berakhir dengan terminator null; 3. Beroperasi melalui fungsi operasi rentetan; 4. Baca atau output rentetan dari papan kekunci.

Empat cara untuk melaksanakan multithreading dalam bahasa c Empat cara untuk melaksanakan multithreading dalam bahasa c Apr 03, 2025 pm 03:00 PM

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.

Cara Mengira C-SubScript 3 Subscript 5 C-SubScript 3 Subscript 5 Algoritma Tutorial Cara Mengira C-SubScript 3 Subscript 5 C-SubScript 3 Subscript 5 Algoritma Tutorial Apr 03, 2025 pm 10:33 PM

Pengiraan C35 pada dasarnya adalah matematik gabungan, yang mewakili bilangan kombinasi yang dipilih dari 3 dari 5 elemen. Formula pengiraan ialah C53 = 5! / (3! * 2!), Yang boleh dikira secara langsung oleh gelung untuk meningkatkan kecekapan dan mengelakkan limpahan. Di samping itu, memahami sifat kombinasi dan menguasai kaedah pengiraan yang cekap adalah penting untuk menyelesaikan banyak masalah dalam bidang statistik kebarangkalian, kriptografi, reka bentuk algoritma, dll.

Fungsi Penggunaan Fungsi Jarak Jarak Jarak Penggunaan C Tutorial Penggunaan Fungsi Penggunaan Fungsi Jarak Jarak Jarak Penggunaan C Tutorial Penggunaan Apr 03, 2025 pm 10:27 PM

STD :: Unik menghilangkan elemen pendua bersebelahan di dalam bekas dan menggerakkannya ke akhir, mengembalikan iterator yang menunjuk ke elemen pendua pertama. STD :: Jarak mengira jarak antara dua iterators, iaitu bilangan elemen yang mereka maksudkan. Kedua -dua fungsi ini berguna untuk mengoptimumkan kod dan meningkatkan kecekapan, tetapi terdapat juga beberapa perangkap yang perlu diberi perhatian, seperti: STD :: Unik hanya berkaitan dengan unsur -unsur pendua yang bersebelahan. STD :: Jarak kurang cekap apabila berurusan dengan Iterator Akses Bukan Rawak. Dengan menguasai ciri -ciri dan amalan terbaik ini, anda boleh menggunakan sepenuhnya kuasa kedua -dua fungsi ini.

Bagaimana cara menggunakan nomenclature ular dalam bahasa c? Bagaimana cara menggunakan nomenclature ular dalam bahasa c? Apr 03, 2025 pm 01:03 PM

Dalam bahasa C, nomenclature ular adalah konvensyen gaya pengekodan, yang menggunakan garis bawah untuk menyambungkan beberapa perkataan untuk membentuk nama pembolehubah atau nama fungsi untuk meningkatkan kebolehbacaan. Walaupun ia tidak akan menjejaskan kompilasi dan operasi, penamaan panjang, isu sokongan IDE, dan bagasi sejarah perlu dipertimbangkan.

Penggunaan Releaseemaphore dalam C Penggunaan Releaseemaphore dalam C Apr 04, 2025 am 07:54 AM

Fungsi Release_semaphore dalam C digunakan untuk melepaskan semaphore yang diperoleh supaya benang atau proses lain dapat mengakses sumber yang dikongsi. Ia meningkatkan kiraan semaphore dengan 1, yang membolehkan benang menyekat untuk meneruskan pelaksanaan.

Masalah dengan versi dev-c Masalah dengan versi dev-c Apr 03, 2025 pm 07:33 PM

DEV-C 4.9.9.2 Kesilapan dan Penyelesaian Penyusunan Apabila menyusun program dalam sistem Windows 11 menggunakan dev-C 4.9.9.2, panel rekod pengkompil boleh memaparkan mesej ralat berikut: gcc.exe: internalerror: dibatalkan (programcollect2) PleaseSubmitafullbugreport.seeforinstructions. Walaupun "kompilasi berjaya", program sebenar tidak dapat dijalankan dan mesej ralat "Arkib kod asal tidak dapat disusun" muncul. Ini biasanya kerana penghubung mengumpul

C dan Pengaturcaraan Sistem: Kawalan Rendah dan Interaksi Perkakasan C dan Pengaturcaraan Sistem: Kawalan Rendah dan Interaksi Perkakasan Apr 06, 2025 am 12:06 AM

C sesuai untuk pengaturcaraan sistem dan interaksi perkakasan kerana ia menyediakan keupayaan kawalan dekat dengan perkakasan dan ciri-ciri kuat pengaturcaraan berorientasikan objek. 1) C melalui ciri-ciri peringkat rendah seperti penunjuk, pengurusan memori dan operasi bit, operasi peringkat sistem yang cekap dapat dicapai. 2) Interaksi perkakasan dilaksanakan melalui pemacu peranti, dan C boleh menulis pemandu ini untuk mengendalikan komunikasi dengan peranti perkakasan.

See all articles