C++ 不常用的STL函数

string

string s = "1234";

s.size(); 		//	aka s.length();

s.data(); 		// aka s.c_str();
#include<string.h>
int main(int argc,char** argv){
    struct sockaddr_in serveraddr;
    bzero(&serveraddr,sizeof(serveraddr));
    return 0;
}
bzero(void *s, int n)memset((void*)s, 0,size_tn)是等价的\
都是用来将内存块的前 n 个字节清零\
但是 s 参数为指针,又很奇怪的位于 string.h 文件中\
也可以用来清零字符串。

std::copy()、back_inserter()

string s = "1234567890"
string res = "";

std::copy(s.begin() + 2, s.begin() + 7, back_inserter(res));		// res = "34567"

std::search() / std::find_end()

find_end()函数可以查找序列a中序列b最后一次出现的位置
search()查找第一次出现的位置

#include <iostream> // std::cout
#include <algorithm> // std::search
#include <vector> // std::vector
using namespace std;
//以普通函数的形式定义一个匹配规则
bool mycomp1(int i, int j) {
	return (i%j == 0);
}
//以函数对象的形式定义一个匹配规则
class mycomp2 {
public:
	bool operator()(const int& i, const int& j) {
		return (i%j == 0);
	}
};
int main() {
	vector<int> myvector{ 1,2,3,4,8,12,18,1,2,3 };
	int myarr[] = { 1,2,3 };
	//调用第一种语法格式
	vector<int>::iterator it = search(myvector.begin(), myvector.end(), myarr, myarr + 3);
	if (it != myvector.end()) {
		cout << "第一个{1,2,3}的起始位置为:" << it - myvector.begin() << ",*it = " << *it << endl;
		// 0。*it = 1
	}
	int myarr2[] = { 2,4,6 };
	//调用第二种语法格式
	it = search(myvector.begin(), myvector.end(), myarr2, myarr2 + 3, mycomp2());
	if (it != myvector.end()) {
	// 自定义的匹配格式,查找连续的三个元素,分别能被2 4 6整除
		cout << "第一个{2,3,4}的起始位置为:" << it - myvector.begin() << ",*it = " << *it;
		// 3。*it = 4
	}
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值