c++容器(vector)、排序(sort)、迭代器(iterator)和文件读取

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;
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞龙程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值