• 一些新get的小知识点(更新中)


     1.fill()

    中 ,它的原理是把那一块单元赋成指定的值,也就是说任何值都可以 
    View Code

    2.memset()

    1 2019.07.22修订:val 传递的是ascii码,所以如果是初始化int类型的数组,只能赋值0 或 -1.如果是初始化char类型数组,那么可以写memset(x,'+',sizeof(x))
    View Code

    3.sort()

    1 #include <algorithm> 
    2 
    3 void sort( iterator start, iterator end ); 
    4 
    5 void sort( iterator start, iterator end, StrictWeakOrdering compare );
    View Code
    sort 是对给定区间所有元素进行排序
    第一个只需要传递你要排序的串(整形数组等都行)的头指针(数组第一个元素的指针)与数组最后元素的下一个位置。
    第二个前面两个参数同第一,但第三个参数是传递一个你定义用于排序的函数
    //有几次想用sort来着,但是忘记头文件了orz
    View Code

    4.while(scanf("%d",&n),n)   //输入0表示结束的简单写法。

    5. 因为还没有系统地学习数据结构orz: { 栈:isEmpty(),isFull....int e = *(a.top-1)取栈顶元素。*检查栈中是否含有指定数据*...队列:enqueue(x),dequeue,isEmpty,isFull.

    6.atoi(char x),stdlib.h...atoi用于将字符串行驶的数字转换成整型数值。

    7.string::find,npos的用法。洛谷P1308统计单词,PTA找250可用。https://blog.csdn.net/linwh8/article/details/50752733。避免博客被删,

     1 问题:有两个字符串a、b, 现想判断a字符串是否包含b字符串,该如何设计程序?
     2 
     3 思路:此处需要用到string库中的find函数与npos参数。
     4 
     5 先说说string::npos参数: 
     6 npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。 
     7 再来说说find函数: 
     8 find函数的返回值是整数,假如字符串存在包含关系,其返回值必定不等于npos,但如果字符串不存在包含关系,那么返回值就一定是npos。所以不难想到用if判断语句来实现!
     9 --------------------- 
    10 作者:小威威__ 
    11 来源:CSDN 
    12 原文:https://blog.csdn.net/linwh8/article/details/50752733 
    13 版权声明:本文为博主原创文章,转载请附上博文链接!
    View Code
     # include <iostream>
     2 # include <string>
     3 
     4 using namespace std;
     5 
     6 int main(void) {
     7     int number;
     8     cin >> number;
     9     while (number--) {
    10         string a, b;
    11         cin >> a >> b;
    12         int pos = a.find(b);
    13         if (pos == string::npos) {
    14             cout << "NO" << endl;
    15         } else {
    16             cout << "YES" << endl;
    17         }
    18     }
    19     return 0;
    20 }//CSDN:小威威
    View Code

    8.string::c_str()用法。转载自https://blog.csdn.net/u013682388/article/details/39547773。

    避免博客被删,存:

     1 //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
     2 //主要介绍c_str
     3 //c_str():生成一个const char*指针,指向以空字符终止的数组。
     4 //这个数组应该是string类内部的数组
     5 #include <iostream>
     6 //需要包含cstring的字符串
     7 #include <cstring>
     8 using namespace std;
     9  
    10 int main()
    11 {
    12     //string-->char*
    13     //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同
    14  
    15     //这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。
    16     //因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中
    17     const char *c;
    18     string s = "1234";
    19     c = s.c_str();
    20     cout<<c<<endl;
    21     s = "abcde";
    22     cout<<c<<endl;
    23 }
    结果是:
    View Code
    上面如果继续用c指针的话,导致的错误将是不可想象的。就如:1234变为abcd
    
    其实上面的c = s.c_str(); 不是一个好习惯。既然c指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?这就要用到strcpy等函数(推荐)
    
    //更好的处理为
    View Code
    //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
    //主要介绍c_str
    //c_str():生成一个const char*指针,指向以空字符终止的数组。
    //这个数组应该是string类内部的数组
    #include <iostream>
    //需要包含cstring的字符串
    #include <cstring>
    using namespace std;
     
    int main()
    {
        //更好的方法是将string数组中的内容复制出来 所以会用到strcpy()这个函数
        char *c = new char[20];
        string s = "1234";
        // c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
        strcpy(c,s.c_str());
        cout<<c<<endl;
        s = "abcd";
        cout<<c<<endl;
    }
    View Code

     9.lower_bound && upper_bound

     1 int main()
     2 {
     3     int A[14]={1,1,2,2,2,4,5,5,6,8,8,8,10,15};
     4     int *pos;
     5     int idx;
     6     //找一个不小于 3 的第一个数字 
     7     pos=lower_bound(A,A+14,3);
     8     idx = distance(A,pos);
     9     cout <<"A["<<idx<<"]="<<*pos<<endl;
    10     //找第一个 大于5的数字 
    11     pos=upper_bound(A,A+14,5);
    12     idx=distance(A,pos);
    13     cout <<"A["<<idx<<"]="<<*pos<<endl;
    14     
    15     return 0; 
    16 } 
    View Code

     A[5]=4 A[8]=6.

    10.%i和%d 没有区别。%i 是老式写法。都是整型格式。

     11.scanf("")的返回值是其接收的变量的个数。&x,&x的时候 x以 后输入的覆盖先前输入的。

     12.unique()

    unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址.
    
    由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址
    
    用法:
    
    sz = unique(b ,b + n)-b; sz为容器大小
    --------------------- 
    作者:untilyouydc 
    来源:CSDN 
    原文:https://blog.csdn.net/qq_40774175/article/details/80343164 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    View Code

     13.手动扩栈。

    #pragma comment(linker, "/STACK:102400000,102400000")///手动扩栈
    View Code

     14. void * 的用法https://www.cnblogs.com/yuanyongbin/p/8058755.html

    void *可以赋值给任何类型的变量 但是需要进行强制转换:

        例:

        int * a = NULL ;

        void * b ;

        a  =  (int *)b;

      但是有意思的是:void* 在转换为其他数据类型时,赋值给void* 的类型 和目标类型必须保持一致。简单点来说:void* 类型接受了int * 的赋值后 这个void * 不能转化为其他类型,必须转换为int *类型;

    ...

  • 相关阅读:
    GridView简单应用
    利用Field获取图片
    css的三种书写方式
    css选择器概述
    关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
    easyUI按钮图表对照大全
    jquery绑定点击事件的三种写法
    css中关于table的相关设置
    Leetcode 287. 寻找重复数
    LeetCode 278. 第一个错误的版本
  • 原文地址:https://www.cnblogs.com/greenaway07/p/10500477.html
Copyright © 2020-2023  润新知