常用的STL方法

/*****************************************************************************/
/**** STRING:字符串 ****/
/*****************************************************************************/
int i = atoi(cstr);         // const char* => int
int i = stoi(str);          // string => int
int l = stol(str);          // string => long
string str = to_string(i);  // int、long => string
strcpy(cstr, str.c_str());  // string => char*,必须采用strcpy方式,不能直接赋值
str.find('a') != str.npos               // 找不到指定字符
str.substr(index, length);              // length + index > str.length()或者不带length参数时,到字符串末位
str.replace(index, length, "string");   // 用"string"替换自index位置开始的连续length个字符
std::reverse(str.begin(), str.end());   // 反转字符串


/*****************************************************************************/
/**** VECTOR:动态数组 ****/
/*****************************************************************************/
auto i = vect.begin();
auto i = vect.end();
auto i = vect.rbegin();
auto i = vect.rend();
size_t i = vect.size();
vect.push_back();
vect.pop_back();
vect.empty();
auto maxIter = max_element(vect.begin(), vect.end()); // 找最大元素
auto minIter = min_element(vect.begin(), vect.end()); // 找最小元素
iter = vect.erase(iter);                // 移除当前元素,使当前迭代器失效,返回值即是新的迭代器地址;在迭代器循环中要小心
A.insert(A.end(), B.begin(), B.end());  // 拼接A、B
set_union(A.begin, A.end(), B.begin(), B.end(), back_inserter(C));  // A、B的并集元素放在C里,放在尾部
set_union(A.begin, A.end(), B.begin(), B.end(), back_inserter(C), inserter(C, C.begin()),
    [](const auto &lhs, const auto &rhs) { return lhs < rhs; });    // A、B的并集元素放在C里,放在头部,自定义了compare函数
set_intersection            // 交集,与set_union使用方法类似
set_difference              // 差集(A减去交集),与set_union使用方法类似
set_symeetric_difference    // 对称差集(并集减去交集),与set_union使用方法类似


/*****************************************************************************/
/***** MAP:键值对 ****/
/*****************************************************************************/
map.push_back(move(make_pair(key, value))); //插入元素
const auto key = iter->first;       // 键
const auto value = iter->second;    // 值


/*****************************************************************************/
/***** SET:集合 ****/
/*****************************************************************************/
A.merge(B); // 求并集,set_union只可用于带有push_back的容器,所以不能用于set;
A.insert(B.begin(), B.end());   // 求并集
A.empty();


/*****************************************************************************/
/***** LIST:既能当栈用,又能当队列用,一招在手,天下我有 ****/
/*****************************************************************************/
A.empty();
A.front();              //首元素
A.back();               //尾元素
A.push_front();         //头部插入
A.pop_front();          //头部删除
A.push_back();          //尾部插入
A.pop_back();           //尾部删除
A.sort();               //链表排序
A.size();               //链表大小
A.reverse();            //链表翻转,我没用过
A.unique();             //链表删除重复元素,我没用过
A.swap(anotherList);    //交换链表,没用过

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值