IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 模板类vector<int> vi以及模板迭代器vector<int>::iterator p = vi.begin(); -> 正文阅读

[C++知识库]C++ 模板类vector<int> vi以及模板迭代器vector<int>::iterator p = vi.begin();

// ConsoleApplicationC++jichu9.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "string"

#include "vector"
using namespace std;
/*
字符串
C中  char str[] {"Im ok!"};
c++  string
*/
//-- 字符数组的常用操作
void charArrayOper(){
	char str[] {"Iam Ok!"};
	printf("%s\n", str);
	printf("%d\n", sizeof(str)); //8 占多少内存
	printf("%d\n", strlen(str)); //7 字符数组的有效长度

	char str2[100] = {"abc"};
	printf("%d\n", sizeof(str2)); //100
	printf("%d\n", strlen(str2)); //3

	char * p = "test";//存放在只读常量区,不能通过p指针对只读常量区内存进行操作; const char * p = "test"; 正常应该这么写
	char * q = "test";
	cout << "&p=" << p << endl;
	cout << "&q=" << q << endl;
	printf("&p = %p\n", p);
	printf("&q = %p\n", q);

}
//-- string 对象的常用操作
void stringObjOperat(){
	string s(5, 'n');
	cout << s.c_str() << endl;
	s.empty();
	s.size();
	s.length();
	s[s.length()-1];

	string s1;
	string s2 = s + s1;
	s1 == s2 ? true : false;
	cout << s1 << endl;
	for (auto &c : s){
		c = toupper(c);
	}
}

//-- 模板类vector<int> v;
void testVector(){
	/*
	vector 可以理解为一个残缺的类类型
	vector<类型> 才是一个完整的类类型
	*/

	struct MyStruct
	{
		int num;
		char sex;
	};
	vector<MyStruct> v;
	vector<int> vi;
	vi.push_back(2);

	vector<int> vi1 = vi;
	vector<int> vi2(vi);
	vector<string> vstr = { "avn", "def", "sss" };
	vector<int>(5, -22); //-- 5个元素,每个元素都是-22
	vector<string>(100); 

	vi.empty();
	vi.push_back(5);
	vi.size();
	vi[vi.size() - 1];
	vi.clear();
	vi != vi1 ? true : false;
	for (auto &item : v)
	{
		item.num *= 2;
		//-- 在循环内不要增删元素,改变vector的容量
	}
}

class testVector{
public:
	static int * testIterator;
};
//-- 迭代器
void testIterator(){
	//-- vector<int>::iterator; 相当于 testVector::testIterator;
	vector<int>::iterator;
	testVector::testIterator;
	//-- 每一种容器,如vector 都定义了一个叫begin的成员函数 和一个叫end的成员函数
	vector<int> vi = { 100, 200, 300 };
	for (vector<int>::iterator iter = vi.begin(); iter != vi.end(); iter++)
	{
		cout << *iter << endl;
	}
	//vi.begin()  指向第一个元素
	//vi.end() 指向容器的最后一个元素的末端。(他不指向最后一个元素)
	//-- 如果容器为空,则begin和end返回的迭代器相同


	//-- 反向迭代器
	for (vector<int>::reverse_iterator ra = vi.rbegin(); ra != vi.rend(); ra++)
	{
		cout << *ra << endl;
	}
	//vi.rbegin()  指向最后一个元素
	//vi.end() 指向容器的第一个元素的前端。(他不指向第一个元素)

	//-- 迭代器运算符 :  一定要确保迭代器指向有效的容器中的元素
	// ra++ 
	// ra-- 
	// iter == ra
	// iter != ra
}

void testConst_iterator(){
	vector<int> vi{ -10, -20, -30 };
	int cnt = 0;
	//vector<int>::const_iterator c_iter  相当于常量指针(const char * p)指针指向的内容不变(不能通过指针 改变指针指向的内容),  指针本身可变(可以改变指针的指向)
	for (vector<int>::const_iterator c_iter = vi.begin(); c_iter != vi.end(); c_iter++)
	{
		cout << *c_iter << endl;
		//*c_iter = 8;  NG
		//-- 使用了迭代器的循环中  插入元素到容器,那只插入一个元素后就应该立即跳出循环体
		cnt++;
		if (cnt == 1)
		{
			vi.push_back(888);
			break;
			//-- 跳出循环,因为一旦原有的内存不够用了, 系统会重新分配内存 将原有内存的数据复制到新内存,原有内存数据引用失效。
		}
	}
	for (vector<int>::const_iterator c_iter = vi.begin(); c_iter != vi.end(); c_iter++)
	{
		cout << *c_iter << endl;
	}
}
//-- 连续插入数据带vector
void insertToVector(){
	cout << "连续插入数据带vector" << endl;
	vector<int> vi = { 1, 2, 3 };
	int cnt = 5;
	auto p = vi.begin();
	while (p != vi.end())
	{
		p = vi.insert(p, 6);
		if (cnt >= 18)
		{
			break;
		}
		++cnt;
		p++;
	}

	//-- 打印输出数据
	auto pp = vi.begin();
	while (pp != vi.end())
	{
		cout << *pp << endl;
		++pp;
	}

	//-- 一个元素一个元素的删除
	auto ppp = vi.begin();
	while (!vi.empty())
	{
		//-- erase删除当前位置元素, 返回下一个元素位置迭代器。
		ppp = vi.erase(ppp);
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char str [] { "ssss" };

	charArrayOper();
	testVector();
	testIterator();
	testConst_iterator();
	insertToVector();
	return 0;
}


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:37:21  更:2021-09-11 18:38:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:54:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码