c++ 11 有用的特性

auto

自动类型推导

#include"stdafx.h"
#include<map>
#include<iostream>

using namespace std;


int main(int argc, char* argv[])
{

	//STL中的map是采用二叉树实现的
	map<char, string>mymap;

	//添加元素
	mymap['a'] = "linying";
	mymap['b'] = "linyu";
	mymap['c'] = "dale";


	//遍历元素
	//map<char, string>::iterator it = mymap.begin();   可见使用自动类型推导写代码更加容易
	auto it = mymap.begin();
	while (it != mymap.end())
	{
		//string 要转换成char*
		//first代表key  second代表value
		cout << it->first << "=>" << it->second.c_str() << endl;
		it++;
	}

	//查找某个key是否存在
	if (mymap.find('d') == mymap.end())
	{
		cout << "没有找到该key" << endl;
	}

	getchar();
	return 0;
}


区间迭代

std::vector<int> arr(5, 100);
for(std::vector<int>::iterator i = arr.begin(); i != arr.end(); ++i) {
    std::cout << *i << std::endl;
}


// & 启用了引用  遍历容器的新方式
for(auto &i : arr) {    
    std::cout << i << std::endl;
}

正则表达式

#include <iostream>
#include <string>
#include <regex>

int main() {
    std::string fnames[] = {"foo.txt", "bar.txt", "test", "a0.txt", "AAA.txt"};
    // 在 C++ 中 `\` 会被作为字符串内的转义符,为使 `\.` 作为正则表达式传递进去生效,需要对 `\` 进行二次转义,从而有 `\\.`
    std::regex txt_regex("[a-z]+\\.txt");
    for (const auto &fname: fnames)
        std::cout << fname << ": " << std::regex_match(fname, txt_regex) << std::endl;
}

判断文件结尾

#include"stdafx.h"
#include<regex>
#include<iostream>

using namespace std;


int main(int argc, char* argv[])
{

	string s= "proc.dlldll";
	// 规则说明  .*说明前面可以是任意字符, $是匹配结尾  \\.dll说明匹配 .dll   组合起来就是判断文件是否以.dll结束
	regex txt_regex(".*(\\.dll$)");    
	
	if (regex_match(s, txt_regex))
	{
		printf("匹配到对应的规则");
	}
	else
	{
		printf("没有匹配到对应的规则");
	}
	
	getchar();
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值