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;
}