这几天在实习,经理要求用C++MFC做出五子棋的单机版、局域网版、还有网络大厅版本,趁这个机会赶紧复习了C++关于C++的STL小例子如下:
标准模板库STL应用举例
向量 vector
线性表 list
队列 queue
映射 map
字符串string
1:向量vector类可用来支持动态数组,动态数组是指可以根据需要改变大小的数组。
可以很容易地声明一个vector类对象,例如:
vector <int> iv;
vector <int> cv(5);
vector <int> cv(5,’x’);
vector <int> iv2(iv);
// Access a vector using an iterator.
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
vector<char> v; // create zero-length vector
int i;
// put values into a vector
for(i=0; i<10; i++) v.push_back('A' + i);
// can access vector contents using subscripting
for(i=0; i<10; i++) cout << v[i] << " ";
cout << endl;
// access via iterator
vector<char>::iterator p = v.begin( );
while(p != v.end()) {
cout << *p << " ";
p++;
}
return 0;
}
2:
线性表 list 类定义了双向的线性表, 又可称为双向链表。List类只支持顺序访问。
下面的C++程序通过实例化链表list类模板建立了一个保存字符的链表,接着使用类模板的排序方法sort( )进行排序,然后输出经过排序后的字符。
// Sort a list.
#include <iostream>
#include <list>
#include <cstdlib>
using namespace std;
int main()
{ int i;
list<char> lst;
// create a list of random characters
for(i=0; i<10; i++)
lst.push_back('A'+ (rand()%26));
cout << "Original contents: ";
list<char>::iterator p = lst.begin();
while(p != lst.end()) {
cout << *p;
p++;
}
cout << endl << endl;
// sort the list
lst.sort( );
cout << "Sorted contents: ";
p = lst.begin();
while(p != lst.end()) {
cout << *p;
p++;
}
return 0;
}
3:
映射map类定义了一个关联容器,并且在容器中使用唯一的关键字来映射相应的值。
map类对象是一系列关键字/值的匹配对。
map的功能在于:只要知道了一个值的关键字,就可以找到这个值。
下面的实例程序通过实例化标准库中的map类模板映射建立了一些英文单词与其反义词的对应关系,利用这种对应系可以迅速查找到一个词的反义词。
// A map of word opposites, using strings.
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main( )
{ int i;
map<string, string> m;
m.insert(pair<string, string>("yes", "no"));
m.insert(pair<string, string>("up", "down"));
m.insert(pair<string, string>("left", "right"));
m.insert(pair<string, string>("good", "bad"));
string s;
cout << "Enter word: ";
cin >> s;
map<string, string>::iterator p;
p = m.find(s);
if(p != m.end())
cout << "Opposite: " << p->second;
else
cout << "Word not in map.\n";
return 0;
}
4:
队列(queue)是一个先进先出(FIFO: First In First Out)的数据结构,在程序设计中经常使用。
对一个队列常用的操作有,在队列尾增加一个元素、在队列头取一个元素以及测试队列是否为空、是否为满等操作。
Using queue class in the Standard C++ Library, Instantiate a queue for strings and demonstrate the following functions in main( ) to show that you know how to use this class:
queue::push( )
queue::pop( )
queue::empty( )
queue::front( )
queue::back( )
queue::size( )
#include <iostream>
#include <queue>
#include <string>
using namespace std;
void main( )
{queue<string> str_queue;
str_queue.push("string1");
str_queue.push("string2");
str_queue.push("string3");
cout<<"the size of the queue is: "<<str_queue.size()<<endl;
cout<<"the front one "<<str_queue.front()<<endl;
cout<<"the back one "<<str_queue.back()<<endl;
str_queue.pop( );
str_queue.pop( );
str_queue.pop( );
if (str_queue.empty( ))
cout<<" the queue is empty!"<<endl;
}
5:
C++提供了两种处理字符串的方法:
以空字符‘\0’结尾的字符数组
容器类string类的对象(标准库中的string类)
使用标准库中的string类的三个理由:
一致性(字符串定义为一种数据类型)
方便性(可以使用标准的运算符)
安全性(不会出现数组越界错误)
// Demonstrate insert(), erase(), and replace().
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1("This is a test");
string str2("ABCDEFG");
cout << "Initial strings:\n";
cout << "str1: " << str1 << endl;
cout << "str2: " << str2 << "\n\n";
// demonstrate insert()
cout << "Insert str2 into str1:\n";
str1.insert(5, str2);
cout << str1 << "\n\n";
// demonstrate erase()
cout << "Remove 7 characters from str1:\n";
str1.erase(5, 7);
cout << str1 <<"\n\n";
// demonstrate replace
cout << "Replace 2 characters in str1 with str2:\n";
str1.replace(5, 2, str2);
cout << str1 << endl;
return 0;
}
结果:
Initial strings:
str1: This is a test
str2: ABCDEFG
Insert str2 into str1:
This ABCDEFGis a test
Remove 7 characters from str1:
This is a test
Replace 2 characters in str1 with str2:
This ABCDEFG a test
相关推荐
C++的面向对象特性是其强大之处。类和对象是面向对象编程的核心,类定义了对象的属性和行为,而对象是类的实例。封装、继承和多态是面向对象的三大特性。封装将数据和操作数据的方法捆绑在一起,保护数据不受外部...
在"c++STL学习——各种容器的技术总结和用法代码实例"中,我们将深入探讨C++ STL的容器部分。 1. 容器概览: C++ STL中的容器是一些类模板,用于存储和管理元素集合。常见的容器有向量(vector)、列表(list)、...
同时,Visual C++也支持标准C++库,因此读者可能会接触到STL(Standard Template Library)中的容器、算法和迭代器,这些工具能够帮助编写出更简洁、高效的代码。 在项目开发实例部分,可能包含了一些实际应用,如...
6. **STL(标准模板库)**:STL是C++的标准库,包含了容器(如vector、list、set)、迭代器、算法和函数对象。通过实例,你可以学习如何利用STL提高代码效率。 7. **异常处理**:C++的异常处理机制用于捕获和处理...
标准库的使用也是C++编程的一部分,例如STL(Standard Template Library)中的容器(如vector、list、set、map)和算法(如排序、查找)等,这些在实例中会有具体的应用。 最后,C++11及后续标准引入了许多新特性,...
其次,C++的内存管理是其高级特性的核心之一。书中将讲解如何使用指针进行动态内存分配和释放,以及智能指针(如unique_ptr、shared_ptr)的使用,这些内容对于避免内存泄漏和提高程序的稳定性至关重要。此外,还将...
4. **指针**:C++中的指针能够直接访问内存地址,是其强大之处,但也是初学者的难点。理解指针的声明、操作以及指针与对象的关系至关重要。 5. **动态内存管理**:包括动态分配和释放内存(new和delete操作),以及...
7. **实例25**:可能展示了C++的STL(标准模板库)使用,包括容器(如vector、list、set)、迭代器、算法和函数对象等,这些都是提高代码效率和可读性的强大工具。 8. **实例34**:可能涵盖了多线程编程。C++11引入...
3. **类与对象**:C++的核心特性之一就是面向对象编程,实例中的类设计和对象使用将让你深入理解封装、继承和多态的概念。 4. **输入/输出操作**:标准输入输出流(iostream库)的使用,如cin和cout,以及文件输入...
同时,作者可能会强调STL(Standard Template Library)的使用,这是C++中的一个重要库,包含容器、迭代器、算法和函数对象,极大地提高了代码的可复用性和效率。 在深入探讨编程技巧部分,读者将接触到内存管理、...
《Visual C++ MFC编程实例》是一本深入探讨使用Microsoft Foundation Classes (MFC)库进行Windows应用程序开发的实践指南。MFC是微软为简化C++程序员在Windows环境下开发图形用户界面应用程序而设计的一个类库,它...
本教程“C++学习系列教程之C++编程实例详解”旨在通过一系列实例,帮助初学者深入理解和掌握C++的核心概念和技术。 1. **基础语法**:C++的基础包括变量声明、数据类型(如int、char、float、double等)、运算符...
3. **C++标准库**:包括STL(Standard Template Library),如容器(vector、list、set等)、迭代器、算法和函数对象,这些都是高效编程的重要组成部分。 4. **异常处理**:Visual C++支持C++的异常处理机制,学习...
C++容器(STL) 标准模板库(Standard Template Library, STL)中的容器是一组预定义的类,它们提供了对动态大小的数据结构的抽象。STL容器包括数组、向量、列表、链表、集合、映射等,每种容器都有其特定的用途和...
8. **STL(标准模板库)**: STL是C++库的一部分,包含容器(如vector、list、map等)、迭代器、算法和函数对象。通过实例,你可以学习如何有效地利用这些工具解决实际问题。 9. **文件操作**: C++提供了读写文件的...
本资源“C/C++数据结构实例实现”提供了C和C++语言实现的各种数据结构的实例,虽然有些可能没有完整功能,但它仍能作为学习和理解数据结构的宝贵资料。 首先,我们来探讨数据结构的基本概念。数据结构是存储和管理...
《Visual C++系统开发实例精粹》是一本深入讲解使用Microsoft Visual C++进行系统开发的书籍,其随书源代码提供了丰富的实例,旨在帮助读者从基础到高级逐步掌握C++编程和系统开发技术。这本书涵盖了从基本的语法、...
3. **STL和智能指针**:STL(Standard Template Library)是C++的标准模板库,包含容器(如vector、list、set)、迭代器、算法和函数对象等。智能指针(如auto_ptr、unique_ptr、shared_ptr)是C++中管理内存的新...
此外,你还会接触到STL(Standard Template Library,标准模板库),这是C++的一个强大工具箱,包含了容器(如vector、list、map等)、迭代器、算法和函数对象等。STL极大地提高了代码的可读性和复用性,降低了编程...