1. 容器(vector)
1.1容器的定义
vector<int> vec(3, 0);//容器第1种定义
vector<int> vec(5, 1);//容器第2种定义
vector<int> vec = { 1,2,3,4 };//容器第3种定义
cout << vec.capacity() << endl;//容器的容量
cout << vec.size() << endl;//容器的大小
1.2 容器的元素操作
//增
vec.push_back(8);//在容器末端添加元素
vec.emplace_back(10);//在容器末端添加元素
//删
vec.erase(vec.begin()+2);//删除固定位置的元素
//去重
vec.erase(unique(vec.begin(),vec.end()),vec.end());//去除重复元素(相当于python里的set去重)
remove(vec.begin(),vec.end(),9);//只移除相邻的元素值,并不能删除地址。
2. 迭代器(iterator)
排序:#include
排序的两种方法
sort(vec.begin(),vec.end(),less())//从小到大排序
sort(vec.begin(),vec.end(),greater())//从大到小排序
vector迭代器
vector vec;
vecter::iterator it;
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
int main() {
vector<int> vec = { 11,23,32,14 };
sort(vec.begin(), vec.end(),less<int>());//由小到大排序
sort(vec.begin(), vec.end(),greater<int>());//由d大到小排序
vector<int>::iterator it;
for (it = vec.begin(); it < vec.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
#include<iostream>
#include<algorithm>
#include<vector>
#include<ctime>
#include<fstream>
using namespace std;
int main() {
srand(time(0));
vector<int> vec1;
vector<int>::iterator it;
int a[10];
for (int i = 0; i < 10; i++) {
a[i]=(rand() % 100 + 1) / 5 * 5 ;
vec1.emplace_back(a[i]);
}
sort(vec1.begin(), vec1.end(),greater<int>());
for (it = vec1.begin(); it < vec1.end(); it++) {
cout << *it << " ";
}
cout<<endl;
}
3.文件读取流
方法一:
#include<iostream>
#include<algorithm>
#include<vector>
#include<ctime>
#include<fstream>
using namespace std;
int main() {
ifstream filel("aaa.txt",ios::in);
if (!filel.is_open()) {
cout << "未打开文件" << endl;
exit(0);
}
int a;
vector<int> vec;
vector<int>::iterator it;
while (filel >> a) {
vec.emplace_back(a);
}
sort(vec.begin(), vec.end(), greater<int>());
for (it = vec.begin(); it < vec.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
方法二:
#include<iostream>
#include<algorithm>
#include<vector>
#include<ctime>
#include<fstream>
using namespace std;
int main() {
ifstream filel("aaa.txt", ios::in);
if (!filel.is_open()) {
cout << "未打开文件" << endl;
exit(0);
}
int a;
vector<int> vec;
vector<int>::reverse_iterator it;
while (filel >> a) {
vec.emplace_back(a);
}
sort(vec.begin(), vec.end(), greater<int>());
for (it = vec.rbegin(); it < vec.rend(); it++) {
cout << *it << " ";
}
cout << endl;
}
4. 容器(map)
map:储存键值对的,相当于python里的字典。
map迭代器:
map<int,string> vec;
map<int,string>::iterator it;
int main() {
//t1.txt文件中保存某柜台一年中不同商品的销售情况,
ifstream ifile("t1.txt", ios::in);
if (!ifile.is_open()) {
cout << "文件没有打开" << endl;
exit(0);
}
//读取文件中的数据,要求使用合适容器存放,
string b;
int num;
map<string,int> m;
map<string,int>::iterator mit;
while (ifile >> b) {
ifile >> num;
m[b] = num;
}
//使用迭代器输出输出所有数据,
for (mit = m.begin(); mit != m.end(); mit++) {
cout << mit->first << " " << mit->second << endl;
}
}