凝望一下深渊—看的多了也就有一丢丢意识
都是搬砖的码农,又不是干研发,大不了删库跑路(sudo rm -rf *)
开个玩笑,开个玩笑
NO.1 vector是什么? 动态数组
NO.2 vector的基本操作
2.1存取数据
2.2遍历
NO.3 操作自定义类型
有现成的函数就直接调用,没必要自己写轮子还不安全—道听途说
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
#include <string>
#define STRINGMAX 40
#define AGE 88
void CreateAndInit()
{
//1.不带长度, 用数据初始化创建方式
//这个视频教师命个变量加个i,有啥规则?后面再看看,有小伙伴告诉我也行
std::vector<int> iArray = { 1,2,3,4,5,6,7 };
for (auto v : iArray) {
std::cout << v << "\t";
}
std::cout << "\n";
//for 循环也行
//大佬都喜欢++i,说专业,我也不知道哪里专业
//万金油:XXX.size();-----看看实际项目中应该也用的多
for (int i = 0; i < iArray.size(); ++i)
{
std::cout << iArray[i] << "\t";
}
std::cout << "\n";
//迭代器的方式-----MD,知识盲区-先有个印象;
std::vector<int>::iterator iter;
for (iter = iArray.begin(); iter != iArray.end(); ++iter) {
std::cout << *iter << "\t";
}
std::cout << "\n";
//2.创建方式,带长度的创建方式
std::vector<std::string> strArray(3); //3: 0,1,2
for (int i = 0; i < 3; ++i) {
std::string str = "爱莉";
strArray[i] = str + std::to_string(i);
}
std::vector<std::string>::iterator iter2;
strArray.push_back("2B铅笔");
for (iter2 = strArray.begin(); iter2 != strArray.end(); ++iter2) {
std::cout << *iter2 << "\t";
}
//记录一下视频里面的报错:vector subscript out of range -留个印象
//报错写的代码 : //strArray[3] = "爱莉4";
//超过原来长度的数据插入方式,只能通过成员函数的方式插入
//strArray.push_back("2B铅笔"); //尾插法,原容量的末位:什么原理:申请内存,在原内存后面扩展内存插入
//所以一般在使用动态数组,有个习惯
//带长度创建的vector,一般都是用带下标法使用
//不带长度创建的vector,采用通过成员函数的方式操作
//视频里面的老鸟说一般都不带长度创建,基本也是,带长度都是练习着玩
std::vector<std::string> str1;
for (int i = 0; i < 3; ++i) {
std::string strTemp;
std::cin >> strTemp;
str1.push_back(strTemp);
}
for (auto v : str1) {
std::cout << v << "\t";
}
std::cout << "\n";
//一段容器去给另一个容器去做初始化---有个印象:assign
int arrayNum[3] = { 1,2,3 };
std::vector <int> dataNum;
dataNum.assign(arrayNum, arrayNum + 3);
for (auto v : dataNum)
{
std::cout << v << "\t";
}
std::cout << "\n";
}
void VectorFunction()
{
std::vector <int> dataNum = {1,2,3,4,5,6,7,8,9,10};
std::cout << dataNum.size() << std::endl;
std::cout << dataNum.capacity() << std::endl;
std::cout << dataNum.max_size() << std::endl;
std::cout << dataNum.at(4) << std::endl; //访问元素最好用这个,记得会有数组越界报警
std::cout << *dataNum.data() << std::endl;//访问元素地址
std::cout << dataNum.front() << std::endl;//第一个元素
std::cout << dataNum.back() << std::endl;//最后一个元素
//删除元素 dataNum.erase();
auto iter = dataNum.begin();
//find()-----------有怎么个函数---留个印象
for (; iter != dataNum.end(); ++iter) {
if (*iter == 4) {
break;
}
}
dataNum.erase(iter);
for (auto v : dataNum)
{
std::cout << v << "\t";
}
std::cout << "\n";
//持续删除重复元素
std::vector <int> dataNum2 = { 1,2,2,2,3,4,5,6,7,8,9,10 };
for (auto dIter = dataNum2.begin(); dIter != dataNum2.end(); ) {
if (*dIter == 2) {
dIter = dataNum2.erase(dIter);
}
else{
++dIter;
}
}
for (auto v : dataNum2)
{
std::cout << v << "\t";
}
std::cout << "\n";
//增,删,改,查
//改--试试--OK
std::vector <int> dataNum3 = { 1,2,3,4,5,6,77,8,9,10, };
auto iter3 = dataNum3.begin();
//find()-----------有怎么个函数---留个印象
for (; iter3 != dataNum3.end(); ++iter3) {
if (*iter3 == 77) {
*iter3 = 7;
}
}
//dataNum.erase(iter);
for (auto v : dataNum3)
{
std::cout << v << "\t";
}
std::cout << "\n";
}
//操作自定义类型
class ME
{
public:
//初始化参数列表---MD都忘记了
ME(){}
ME(std::string, int age) :name(name), age(age) {}
//啥是友元????
friend std::istream& operator>>(std::istream& in, ME& object)
{
in >> object.name >> object.age;
return in;
}
//重载好强大
//注意方向 >> <<
friend std::ostream& operator<<(std::ostream& out, ME& object)
{
out << object.name << "\t" << object.age << std::endl;
return out;
}
protected:
std::string name;
int age;
};
void opertorUserData()
{
std::vector<ME>mmArray;
ME mm;
while (1) {
std::cout << "请输入美女的姓名和年龄" << std::endl;
std::cin >> mm;
mmArray.push_back(mm);
char userKey = 0;
std::cout << "是否继续(Y/N)?----->':";
std::cin >> userKey;
if (userKey == 'N' || userKey == 'n') {
break;
}
}
std::cout << "姓名" << "\t" << "年龄" << std::endl;
for (auto v : mmArray)
{
std::cout << v;
}
std::cout << "\n";
}
int main()
{
std::cout << "Hello World!\n";
//TestCin();
//CreateAndInit();
//VectorFunction();
opertorUserData();
//vector可以当参数传递
}
插曲:
工作就是让你早日赚钱赎身,认清现实。
没人会因为没有好好工作而遗憾终身,都是遗憾吃喝玩乐。
潇洒去!后面再慢慢学习