目录
1, 什么是vector
2, 创建vector
2-1, 标准数据类型
2-2, 自定义数据类型
2-3, 其他创建方式
3, 操作vector
3-1, 赋值
3-2, 添加元素
3-2-1, 添加元素(assign)
3-2-1-1, 标准数据类型
3-2-1-2, 自定义数据类型
3-2-2, 添加元素(insert)
3-2-2-1, 标准数据类型
3-2-2-2, 自定义数据类型
3-2-3, 添加元素(push_back)
3-2-3-1, 标准数据类型
3-2-3-2, 自定义数据类型
3-3, 查询(at)
3-3-1, 标准数据类型
3-3-2, 自定义数据类型
3-4, 获取容量(capacity)
3-5, 获取长度(size)
3-6, 交换(swap)
3-7, 删除元素(erase)
3-8, 清空元素(clear)
4, 嵌套vector
1, 什么是vector
C++中的一种容器数据类型, 也叫单端数组, 可动态扩展, 并不是在原空间上进行扩展,而是重新找更合适的内存空间, 将原来的数据拷贝到新空间,并释放原来的空间, 迭代器支持随机访问
2, 创建vector
通过vector 对象名, 可创建vector, 数据类型可以是标准数据类型, 也可以是自定义类型
2-1, 标准数据类型
//指定容器中元素数据类型为string
vector v1;
2-2, 自定义数据类型
class Myclass
{
public:
Myclass() {};
Myclass(string name, int age) :m_name(name), m_age(age) {};
string m_name;
int m_age;
};
Myclass m("aaa", 1);
//容器中元素的类型为Myclass
vector v1;
2-3, 其他创建方式
Myclass m("aaa", 1);
vector v1;
//拷贝构造方式创建
vector v2(v1);
//通过迭代器容器方式创建
vector v3(v1.begin(), v1.end());
//创建v4, 并插入5个m对象
vector v4(5, m);
3, 操作vector
3-1, 赋值
通过vector 对象名2 = 对象名1, 进行赋值
vector v1;
vector v2 = v1;
3-2, 添加元素
3-2-1, 添加元素(assign)
assign是用新的元素替换原来vector的元素
3-2-1-1, 标准数据类型
//通过迭代器区间方式进行赋值
v2.assign(v1.begin(), v1.end());
//给容器v1, 赋值5个字符串a
v1.assign(5, "a");
3-2-1-2, 自定义数据类型
//通过迭代器区间方式进行赋值
v2.assign(v1.begin(), v1.end());
Myclass m("aaa", 1);
//容器中元素的类型为Myclass
vector v1;
//给容器v1, 赋值5个m对象
v1.assign(5, m);
3-2-2, 添加元素(insert)
insert是向vector指定位置, 添加元素, 支持一次添加多个元素
3-2-2-1, 标准数据类型
//表示在首元素位置, 以此插入3个字符串b
v1.insert(v1.begin(), 3, "b");
//表示在首元素位置, 插入字符串c
v1.insert(v1.begin(), "c");
3-2-2-2, 自定义数据类型
Myclass m1("aaa", 1);
vector v1;
//在首元素处插入m1
v1.insert(v1.begin(), m1);
//在首元素处插入2个m1
v1.insert(v1.begin(), 2, m1);服务器托管网
3-2-3, 添加元素(push_back)
push_back是在vector的尾部添加元素, 只能单个添加
3-2-3-1, 标准数据类型
vector v1;
v1.assign(3, "a");
//在尾部添加c
v1.push_back("c");
3-2-3-2, 自定义数据类型
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
vector v1;
v1.assign(3, m1);
//在尾部添加m2
v1.push_back(m2);
3-3, 查询(at)
通过对象名[索引]或者对象名.at(索引), 获取vector中的元素
3-3-1, 标准数据类型
//通过索引方式查询
cout
3-3-2, 自定义数据类型
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
vector v1;
v1.push_back(m1);
v1.push_back(m2);
v1.push_back(m3);
//通过索引方式查询
cout
3-4, 获取容量(capacity)
通过对象名.capacity(), 获取vector的容量大小
cout
3-5, 获取长度(size)
通过对象名.size(), 获取vector的元素个数
cout
3-6, 交换(swap)
通过对象名1.size(对象名2), 交换两个vector的元素, 两个vector的数据类型需要一致
v1.swap(v2);
3-7, 删除元素(erase)
通过对象名.erase(迭代器位置), 删除元素
//指定迭代器位置删除元素
v1.erase(v1.begin());
//删除尾部元素
v1.pop_back();
3-8, 清空元素(clear)
通过对象名.clear(), 清空vector元素
v1.clear();
//指定迭代器区间清空元素
v1.erase(v1.begin(), v1.end());
4, 嵌套vector
通过vecto服务器托管网r> 对象名, 可实现嵌套vector
#include
#include
#include
using namespace std;
class Myclass
{
public:
Myclass() {};
Myclass(string name, int age) :m_name(name), m_age(age) {};
string m_name;
int m_age;
};
void print_v(vector>& v)
{
//it为外层vector的第一个元素迭代器
for (vector>::iterator it = v.begin(); it != v.end(); it++)
{
//vit为内层vector的第一个元素迭代器
for (vector::iterator vit = (*it).begin(); vit != (*it).end(); vit++)
{
cout m_name v1;
vector> v2;
v1.push_back(m1);
v2.push_back(v1);
print_v(v2);
system("pause");
return 0;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
1、数据库和文件系统 1.1、查看默认数据库 SHOW DATABASES; 可以看到有4个数据库是属于MySQL自带的系统数据库。 mysql MySQL 服务器托管网系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息…