C++相关shared_ptr, string和int long等互相转换,map相关,删除文件,CHECK_XX,文件流控制参数ios设置

shared_ptr

使用shared_ptr必须定义包含文件

#include <boost/shared_ptr.hpp>
#include <memory>

并做声明

using boost::shared_ptr;

string 和 int long 等相互转换

to string

string to_string (int val);

string to_string (long val);

string to_string (long long val);

string to_string (unsigned val);

string to_string (unsigned long val);

string to_string (unsigned long long val);

string to_string (float val);

string to_string (double val);

string to_string (long double val);

string -> int/long

std::stoi
std::stol
std::stoll

map

map.begin()指向map的第一个元素,而 map.end()指向map的最后一个元素之后的地址,无论执行map.erase(iter)还是map.add(key, value),map.end()所返回的值永远不会发生变化,都是指向同一块内存。

map.lower_bound()返回的是大于某个键值的元素
map.upper_bound()返回的是不小于某个键值的元素

不过在具体编程过程中,如果设置为降序排列,lower_bound的返回值就不是map中的元素
map的第三个参数的意义和map.size的含义

template < class Key,                                     // map::key_type
           class T,                                       // map::mapped_type
           class Compare = less<Key>,                     // map::key_compare
           class Alloc = allocator<pair<const Key,T> >    // map::allocator_type
           > class map;

less_equal是按key值升序排列,greater_equal是降序排列,而同一个key值后面跟的值按照降序排列

map.size()返回的是哈西对的个数,key和T有一个不同即为不同对

#include <iostream>
#include <map>
#include <functional>

using namespace std;

int main()
{
        map<int, int, greater_equal<int>> m_greater;
        map<int, int, less_equal<int>> m_less;
        for(int i = 15; i < 20; i ++)
                for(int j = 45; j < 50; j ++)
                {
                        m_greater.emplace(i, j);
                        m_less.emplace(i, j);
                }

        cout << "m_greater: " << endl;
        for(auto &c: m_greater)cout << c.first << "->"<< c.second << endl;
        cout << "m_less: " << endl;
        for(auto &c: m_less)cout << c.first << "->"<< c.second << endl;
        cout << "map.size(): " << m_greater.size() << "," <<  m_less.size() << endl;
}

结果如下:

CHECK_XX

\#define CHECK_EQ(val1, val2) CHECK_OP(_EQ, ==, val1, val2)
\#define CHECK_NE(val1, val2) CHECK_OP(_NE, !=, val1, val2)
\#define CHECK_LE(val1, val2) CHECK_OP(_LE, <=, val1, val2)
\#define CHECK_LT(val1, val2) CHECK_OP(_LT, < , val1, val2)
\#define CHECK_GE(val1, val2) CHECK_OP(_GE, >=, val1, val2)
\#define CHECK_GT(val1, val2) CHECK_OP(_GT, > , val1, val2)

使用宏定义定义检测val1和val2的值,若不符合定义的符号则返回错误信息

删除文件

使用remove函数

remove("~\files\1.txt")

文件流控制时参数设置

ios::in 为输入(读)而打开一个文件

ios::out //为输出(写)而打开文件 
ios::ate //初始位置:文件尾 
ios::app //所有输出附加在文件末尾 
ios::trunc //如果文件已存在则先删除该文件 
ios::binary //二进制方式

bug error: passing ‘XXX’ as ‘this’ argument of ‘XXX’

C++中const 引用的是对象时只能访问该对象的const 函数,因为其他函数有可能会修改该对象的成员,编译器为了避免该类事情发生,会认为调用非const函数是错误的,即const函数只能调用const函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值