C++知识点杂记

作者: 邓小猪
博客:https://blog.csdn.net/qq_35210586
知乎:https://www.zhihu.com/people/dengxiaozhu/activities
2019 年 4 月 15 日

opencv官方文档

https://docs.opencv.org/2.4/index.html

!(a||b) 和!a&&!b 等价

证明如下:

  1. a = 0, b = 0时, a || b == 0, !(a || b) == 1, !a && !b == 1
  2. a = 0, b = 1时, a || b == 1, !(a || b) == 0, !a && !b == 0
  3. a = 1, b = 0时, 和2相同
  4. a = 1, b = 1时, a || b == 1, !(a || b) == 0, !a && !b == 0

vector的用法

https://www.cnblogs.com/Nonono-nw/p/3462183.html

set的用法

https://www.cnblogs.com/zyxStar/p/4542835.html
example1:set的insert操作
set的单元素插入返回一个二元组(Pair)。成员 pair::first 被设置为指向新插入元素的迭代器或指向等值的已经存在的元素的迭代器。成员 pair::second 是一个 bool 值,如果新的元素被插入,返回 true,如果等值元素已经存在(即无新元素插入),则返回 false。

因为在 set 中元素的主键是唯一的,当前插入操作将会检测被插入元素是否等于容器中某个已存在元素,如果是,新的元素将不会被插入,且返回指向这个等值的已经存在的元素(如果当前函数有返回值)。

所以set.insert(xx).second是用来确认set元素是否成功插入的标识,也可以用来确认该元素之前没有被插入也没有被处理过。

#include "stdafx.h"
 
#include <iostream>
#include <set>
using namespace std;
 
int main() 
{
    set<int> s;
    s.insert(1);
 
    //返回值为pair<set<int>::iterator, bool>
    //迭代器表示该元素的位置
	
    pair<set<int>::iterator, bool> p;
 
    p=s.insert(1);
    cout << *p.first << endl;
    cout << p.second << endl; 
    //输出1 和 0 
 
    p=s.insert(2);
    cout << *p.first << endl;
    cout << p.second << endl; 
    //输出2 和 1 
	getchar();
}

example2:lower_buond&upper_bound

#include<set>    
#include<iostream>    
using namespace std;
int main()
{
    set<int>s;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        s.insert (x);
    }
    set<int>::iterator it;
    for(it=s.begin ();it!=s.end ();it++)
    {
        printf("%d\n",*it); 
    }
    
    //s.end()没有值
     cout<<"s.begin()   "<<*s.begin ()<<endl;
    //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    cout<<"lower_buond  3  "<<*s.lower_bound (3)<<endl;
    
    //upper_bound()--返回大于某个值元素的迭代器
    cout<<"upper_bound  3  "<<*s.upper_bound (3)<<endl;

    //find()--返回一个指向被查找到元素的迭代器
    cout<<"find()  3   "<<*s.find (3)<<endl;

    cout<<"s.size()  "<<s.size ()<<endl;
    return 0;
}

结果为:
在这里插入图片描述
补充:STL之std::set、std::map的lower_bound和upper_bound函数使用说明
https://www.cnblogs.com/tocy/p/STL_lower_bound_intro.html

map中的first和second

map<string, int> m;
m[“one”] = 1;
map<string, int>::iterator p = m.begin();
p->first; // 这个是 string 值是 “one”
p->second; //这个是 int 值是 1

break和continue的区别

break
1.break 语句可用于跳出循环。
2.break所在的循环体已经结束。
continue
1.continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。
2.continue所在的循环体并没有结束。
demo演示

    for (i=0;i<5;i++)
    {
        if (i==3) break;
        x=x + "The number is " + i + "<br>";
    }
    //  只输出 0 , 1 , 2 , 到3就跳出循环了
    ---
    for (i=0;i<=5;i++)
    {
        if (i==3) continue;
        x=x + "The number is " + i + "<br>";
    }
    //  不输出3,因为continue跳过了,直接进入下一个迭代

do…while(0)的用法

https://www.jianshu.com/p/99efda8dfec9

函数的返回值

按一般程序开发惯例,解释如下:
return 0; 函数返回0表示成功完成本函数
return -1;执行该函数失败!
以上两个是约定俗成,系统提供的函数绝大部分定义为int类型返回值的都是这样的!
布尔类型返回:
return 0;返回假
return 1; 返回真
一般这样的函数用来实现一个判断是否的逻辑,或检查有无的数据。返回真表示“是”,返回假表示“否”!如:isalpha()判断是否是字母 isdigit()判断是否是数字

new int 和 new int()的区别???

int *p=new int;——分配一个int型变量所占大小的空间,并将首地址赋给int *型指针p。
int *p=new int[10];——分配一个有10个int型元素的数组所占空间,并将该数组的第一个元素的地址赋给int *型指针p。
int *p=new int(10);——分配一个int型变量所占大小的空间,在其中放入十进制数10,并将首地址赋给int *型指针p。
https://blog.csdn.net/zwz2011303359/article/details/80871050
https://blog.csdn.net/zjcxhswill/article/details/50641348

图像通道分离与合并——cv::split()与cv::merge()详解

https://blog.csdn.net/guduruyu/article/details/70837779

cv::Mat类

初始化的具体例子http://blog.sina.com.cn/s/blog_79bb01d00101ao58.html
基本用法https://blog.csdn.net/qq_37406130/article/details/78725406

opencv Mat 数据 最大值和最小值

https://blog.csdn.net/tianzhaixing2013/article/details/21390505

名称空间

http://www.runoob.com/cplusplus/cpp-namespaces.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值