C++补习日志1_string_vector_map_数组

C++

字符串

关于初始化

  • =是拷贝初始化,而string s(“qwqw”);是直接初始化。(均是)
  • 初始化10个c:string s(10,‘c’);

对象操作

  1. 读取cin,会自动忽略开头空格,遇到空格停止,

比如 ‘’[空格][空格][空格]hello world[空格][空格][空格]’’读成hello

  1. 读取未知数量的string对象:while小括号里面cin
  2. getline(cin,mystring);:读取换行符,但不收入
  3. 读取输出超过80字符的行,2、3点 配合if

string::size_type类型(P79)

  1. 最好不要直接在表达式混用size()函数,因为返回这个标题的类型,无符号整型,会出现一想不到的问题
#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	string line = "ABCD";
	int n = -6;
	if(line.size() < n)
	{
    
    
		cout << "这就是惊喜" << endl;
	}
	return 0;
}

在这里插入图片描述
负数会被转化成很大的无符号整型(很大是因为无符号二进制首位为1的缘故)
6. 字符串比较,一个一个比,比不出来比长短

Hiya > Hello World > Hello

  1. 字面值和string对象相加
    字面值相加时候至少保证每个字面值和一个string相加(P81)
  2. 字符处理函数,是否大小写,空格等P82
    ps:toupper等是返回一个值,而不是把传进去的的改变

eg:
引用改变string里面的所有字符(如变大写)

9.decltype类似auto: decltype(exp) varname = value

vector

类模板,c++还有函数模板

定义,初始化

vector< int > v
vector< int > v1(v2)
vector< int > v1 = v2

vector< int > v(n, val)

vector< int > v{1,2,3}
vector< int > v = {1,2,3}

如果想定义大小,只能使用直接初始化,括号那种,而且只有一个括号和数字,那个给的是大小
实际上没有必要一开始设置大小,他能高性增长,除了所有值一样

关于迭代器使用

  • 通常我们不需要非常清楚迭代器是什么类型,用auto去接收
  • 而且在for里面要习惯用 != 来判断迭代器是否到end,因为这个对c++标准库提供的所有容器都适用
  • const_iterator只读元素,不能修改
  • cbegin,cend,就是const的迭代器
  • 解引用,访问成员 (*it).empty() 等价 it->empty()

注意

使用了迭代器的循环体不要向所属容器添加元素

map插入,排序

  1. insert方法: myMap.insert(pair<int,string>(1,“a”))

  2. []数组方法,比较方便,没有就创建,有就覆盖

  3. 排序,这种排序是排到vector里面,不会改变map,用引用可以

  • cmp函数的参数是pair
  • 放入vector,以pair形式
vector< pair<string,int> > vec;
for(map<string,int>::iterator it = mp.begin(); it != mp.end(); it++){
    
    
    vec.push_back( pair<string,int>(it->first,it->second) );
}
sort(vec.begin(),vec.end(),cmp);
 
bool cmp(pair<string,int> a, pair<string,int> b) {
    
    
	return a.second < b.second;
}

数组

  • 数组,方括号的那种,数组间拷贝赋值(等号那种)
  • 类型修饰符从右向左绑定,最好理解成由内向外
int *ptr[10];	//十个整型指针的 数组
int &refs[10] = ?;	//无
int (*Parrey)[10];	//Parrey指向一个数组,数组有十个整型
int (&arrFef)[10];	//arrRef引用一个数组,数组有十个整型

eg:
int *(&arry)[10] = ptrs; //arry是数组的引用,该数组有10个指针。
书P103

猜你喜欢

转载自blog.csdn.net/foolbirdM/article/details/123212606