zoukankan      html  css  js  c++  java
  • sublime自定义代码段

    ( 不定期更新 ) 可能有比较常用的东西就写成代码段保存咯, 十分好用的小技巧

    一方面记录一下自己地代码段, 一方面说说方法

    方法 : 工具---插件开发---新建代码片段---设置---保存(后缀改为.sublime-snippet)

    名称 功能
    cf 生成一套cf模板
    for2 两层for循环
    tobit 十进制转二进制
    toint 二进制转十进制
    kmp kmp

    cf

    <snippet>
    	<content><![CDATA[
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int main(){
    	ios::sync_with_stdio(false);
        cin.tie(0);
    
    	return 0;
    }
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>cf</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.c++</scope>
    </snippet>
    
    

    for2

    <snippet>
    	<content><![CDATA[
    for(int i = 0; i < ${1:n}; ++i) {
    	for(int j = 0; j < ${2:m}; ++j) {
    		${3:/*code*/}
    	}
    }
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>for2</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.c++</scope>
    </snippet>
    
    

    tobit

    <snippet>
    	<content><![CDATA[
    string tobit(long long x, int m) { 	// 作用 : 十进制数(x)转二进制字符串(m位), 前补0
    	string s(m,'');
    	for(int i = m-1; i >= 0; --i) 
    	{ 
    	    s[i] = (x & 1) + '0';
    	    x >>= 1;
    	}
    	return s;
    }
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>tobit</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.c++</scope>
    </snippet>
    
    

    toint

    <snippet>
    	<content><![CDATA[
    long long toint(string s) { // 作用 : 二进制串转十进制数 (long long)
    	long long x = 0;
    	int m = s.size();
    	for (int j = 0; j < m; ++j)
    	{
    	    x = x*2 + s[j] - '0'; // 二进制s --> 十进制x
    	}
    	return x;
    }
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>toint</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.c++</scope>
    </snippet>
    
    

    kmp

    <snippet>
    	<content><![CDATA[
    /* kmp 算法
    next : 用于求next数组, 返回next数组, 注意"真正的next数组是这里next的index = 1-n, 用于kmp的是0-(n-1)"
    kmp : 用于求kmp, 返回s2在s1中出现的位置(头部)
    */
    vector<int> getnext(string s) {
    	vector<int> next;
    	next.push_back(-1);
    	int i = 0, j = -1;	// j指向公共前后缀前缀的最后一个元素上, 表示最长公共前后缀长度
    	while(i < s.size()) {
    		if(s[i] == s[j] || j==-1) {
    			i++;
    			j++;
    			next.push_back(j);
    		}
    		else {
    			j = next[j]; // 如果s[i]!=s[j]说明匹配失败, 回到上一级公共前后缀处
    		}
    	}
    	return next;
    }
    
    vector<int> kmp(string s1, string s2) {	// kmp : 找出s2在s1中出现的位置(全部)
    	vector<int> next = getnext(s2);
    	vector<int> ans;
    	int i = 0, j = 0; 	// i指s1, j指s2
    	while(i < s1.size()) {
    		if(s1[i] == s2[j] || j==-1) {
    			if(j == s2.size()-1) { // 如果匹配完了s2
    				ans.push_back(i - j); // ans += s2首部在s1中的位置
    				j = next[j];
    			}
    			else {
    				i++;
    				j++;
    			}
    		}
    		else {
    			j = next[j];
    		}
    	}
    	return ans;
    }
    
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>kmp</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.c++</scope>
    </snippet>
    
    
  • 相关阅读:
    Codeforces Round #297 (Div. 2) 525C Ilya and Sticks(脑洞)
    全栈必备 JavaScript基础
    2014-04-19编程之美初赛题目及答案解析
    doT js模板入门 2
    一篇关于arc下内存管理的老文章,包含各种冷门修饰符(关于内存),写的较好,mark
    MyBatis官方教程及源代码解析——mapper映射文件
    Android中图片的三级缓存策略
    python字符串/元组/列表/字典互转
    关于字节对齐的理解
    阿里云服务器ecs配置之安装redis服务
  • 原文地址:https://www.cnblogs.com/roccoshi/p/13093461.html
Copyright © 2011-2022 走看看