头文件中不应包含using声明。
- String
1.1. 定义和初始化
(1) 默认初始化
(2) String s2(s1)
(3) String s3(“weipengya”)
(4) String s3 = “sdsf”
(5) String s4(n,’c’)
1.2. string对象上的操作
(1) getline()读取一整行,参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读入),然后把所读内容存入到string对象中(不存换行符)。
(2) 如果一条表达式中有了size()函数就不要在使用int类型数据了,这样能避免混用 int 和 unsigned 可能带来的问题
(3) 字面值和string对象相加:“+”两侧的运算对象至少有一个是string。字符串字面值与string是不同的类型。
(4) 处理string对象的字符:P82
(5) 使用范围for语句改变字符串中的字符:必须把循环变量定义成引用类型。 - Vector
2.1. 定义和初始化vector对象
(1) vector v1
(2) Vector v2(v1) Vector v2 = v1
(3) Vector v3(n,val)
(4) Vector v4(n)
(5) Vector v5{a,b,c…} vector v5 = {a,b,c…} 如果使用了花括号的形式但是提供的值又不能用来列表初始化,就要考虑用这样的值类构造vector对象了。 如: vector v7{10};
2.2. 下标
(1) V[n] 返回V中第n个位置上元素的引用。
(2) 不能用下标形式添加元素 - 迭代器
3.1. 使用迭代器
(1) iter->mem 等价于 (*iter).mem
(2) 迭代器失效:不能在for循环中向vector对象添加元素;任何一种可能改变vector对象容量的操作,如push_back,都会使该vector对象的迭代器失效。 - 数组
4.1. 初始化
(1)字符数组的特殊性:可以使用字符串字面值对此类数组初始化。注意:字符串字面值结尾处有一个空字符。
(2)数组不允许拷贝和赋值
4.2. 指针和数组
(1) 很多用到数组名字的地方,编译器都会自动地将其替换成一个指向数组首元素的指针。
(2) 标准库函数begin和end:在头文件iterator中。
4.3. 使用数组初始化vector
Int arr[] = {1,2,3,4,5,6};
Vector v(begin(arr),end(arr));
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<iterator>
using namespace std;
void vprint(vector<int>& v)
{
if (v.empty()) cout << "空" << endl;
else
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " " << ends;
}
cout << endl;
}
}
void vprint(vector<string>& v)
{
if (v.empty()) cout << "空" << endl;
else
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " " << ends;
}
cout << endl;
}
}
void pushVector(vector<int>& v)
{
int a;
while (cin >> a && a != 0)
{
v.push_back(a);
}
}
void f_317()
{
string stop = "stop";
string str = "";
vector<string> v;
while (cin >> str && str != stop)
{
v.push_back(str);
}
vprint(v);
}
void f_320()
{
int stop = 0;
int num;
int len;
vector<int> v;
while (cin >> num && num != stop)
{
v.push_back(num);
}
vprint(v);
for (int i = 1; i < v.size(); i++)
{
cout << v[i - 1] + v[i] << endl;
}
len = v.size();
cout << "第二问" << endl;
for (int i = 0; i < len / 2; i++)
{
cout << v[i] + v[len - 1 - i] << endl;
}
}
void f_321()
{
vector<string> v{ 10,"hi" };
vector<string>::iterator begin = v.begin();
vector<string>::iterator end = v.end();
for (vector<string>::iterator it = begin; it != end; it++)
{
cout << *(it) << endl;
}
}
void f_323()
{
vector<int> v(10, 4);
vector<int>::iterator begin = v.begin();
vector<int>::iterator end = v.end();
vprint(v);
for (vector<int>::iterator it = begin; it != end; it++)
{
*(it) = 2 * (*(it));
}
vprint(v);
}
void f_339()
{
string s1 = "weipengyan";
string s2 = "lixue";
char a[] = { 'W','p','y','\0' };
char b[] = { 'L','X','E','\0' };
char* p_a = a;
char* p_b = b;
const char* p_c = "good";//"good"是const char*类型
cout << strlen(p_a) << endl;
cout << strcmp(p_a, p_b) << endl;
//cout << strcat(p_a, p_b) << endl;
//cout << strcpy(p_a, p_b) << endl;
cout << strlen(p_c) << endl;
}
void f_340()
{
char a[1000] = "weipengyan";
char b[1000] = "lixue";
char c[2000];
//strcpy(c,strcat(a,b));
cout << c << endl;
}
void test1()
{
char a[4] = { 'w','p','y','\0' };
char b[4] = { 'l','x','y','\0' };
const char* p_a;
p_a = "Beijing";
string s = "Xian";
const char* p_b = s.c_str();
cout << p_a << endl;
cout << p_b << endl;
string s1 = a;
string s2 = b;
cout << s1 + s2 << endl;
cout << s1 + b << endl;
cout << a + s2 << endl;
//出错
//cout << a + b << endl;
int arr[6] = { 1,2,3,4,5,6 };
vector<int> v(arr, arr+3);
cout << v.size() << endl;
cout << v[2] << endl;
}
void test2()
{
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
//int* b = arr;
//int* e = &arr[10];
//for (b; b != e; b++)
// cout << *b << " " << ends;
//cout << endl;
int* b = begin(arr);
int* e = end(arr);
for (b; b != e; b++)
cout << *b << " " << ends;
cout << endl;
}
void f335()
{
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int* b = begin(arr);
int* e = end(arr);
for (b; b != e; b++)
{
*b = 0;
cout << *b << " " << ends;
}
cout << endl;
}
int main()
{
f335();
system("pause");
return 0;
}