#代码优化之匹配相关

1、原代码:

if( strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()||
	strkey.comparenocase()
	)
	{
		
	}

优化后的代码:

char ** array={"a", "b"};
int len = ARRAYSIZE(array);
const char ** where = std::find_if(array, array+len, std::bindlst(std::equal_to<std::string>(), strKey));
if(where != (array+len))
{
    std::cout<<"find it";
}

2、原代码:

(关于 将某字符串要映射给其他类型)

std::map<std::string, int> mapTest;
mapTest.insert("aoo", 1);
...
int nIndex = mapTest["aoo"];

转化后的代码:

struct kv
{
    std::string strKey;
    int nValue;
}

struct finder
{
    kv key;
    finder(std::string strTmp)
    {
        key.strKey = strTmp;
    }
    bool operator()(const kv & tmp)
    {
        return tmp.strKey==key.strKey;
    }
}

kv ** kvArray = {{"1", 1}, {"2",2}};

int len = sizeof(kvArray)/sizeof(kv);
finder find("1");
kv * pFound = std::find_if(kvArray, kvArray+len, find);

PS:关于第二种优化,我不知道这算不算是一种优化手段,当kvArray特别多值时,这可能只是减少代码行数,这里就先做记录~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值