map
map 就像是python中的字典一样,都是以键值对储存
增
map<string, string > m;
m["aa"] = "hhh";
//或
m.insert({"bb" , "666"});
m.insert(make_pair("cc" , "777"));
删
可以通过关键字来对map中的数据进行删除,需要使用map中的关键字 erase
m.erase("bb");
也可以使用迭代器来删除
迭代器是为了表示容器中某个元素位置这个概念而产生的,相当于容器中元素的指针地址,通过迭代器运算可以获取到容器中的元素,迭代器的背后就是指针运算
//迭代器方式删除。
for(auto i = m.begin() ; i != m.end() ; i++){
cout <<i->first << " = "<< i->second << endl;
if(i->first == "李四"){
m.erase(i);
}
}
begin() 是获取容器的首个元素的指针, end() 是获取容器最后一个元素指针再偏移后一位的指针,并不是代表最后一位元素
改
可以通过 []
来修改,
m["aa"] = 20;
查
因为map 是以键值对的方式来存储数据的, 所以可以通过键获取到value
cout << m["aa"] << endl;
其他还有 如 是否有数据判断, m.size()
如果map 为空则是0, 非0就是非空, 这个 size 也可以获取大小,map中存在几个数据就是几, 键判断, 如果该键存在,则为 1 m.count()
set
set 就是集合, 里面的数据不可重复,且有顺序
添加 insert
set<int> s1{3,4,5,6,3};
s.insert(16);
删 erase
需要用迭代器来删除
set<int> s1({3,4,5,6,3});
for(auto p = s1.begin(); p != s1.end() ; p++){
cout <<*p << endl;
if(*p == 4){
s1.erase(p);
}
}
也可以将整个集合全部清空, s1.clear()
查
set<int> s1({3,4,5,6});
for(auto p = s1.begin(); p != s1.end() ; p++){
cout <<*p << endl;
}
其他还有 如 是否有数据判断, s1.size()
如果map 为空则是0, 非0就是非空, 这个 size 也可以获取大小,s1中存在几个数据就是几, 值判断, 如果该set中的值存在,则为 1 ,m.count()
因为set 不是键值对储存的,所以没有修改功能
thread
在编程中线程是很常见的事情, 如 两个任务一起执行
在c++ 中创建一个线程是很方便的, 只需要导入 thread ,然后所以 thread 就可以创建一个线程对象了
using namespace std;
void run(){
for (int i; i <= 10; i++){
cout << i << endl;
Sleep(1000);
}
}
int main() {
//让该线程执行run函数
thread t(run) ;
cout << "执行了main函数 " <<endl;
return 0;
}
这样的代码是出错误的,因为 在main 函数中 没有写 join ,这样程序不会等待线程的执行完毕再停止
而是main 函数中完就会结束进程
如果要等待子线程结束再停止进程,可以使用join 来等待
void run(){
for (int i; i <= 10; i++){
cout << i << endl;
Sleep(1000);
}
}
int main() {
//让该线程执行run函数
thread t(run) ;
cout << "执行了main函数 " <<endl;
t.join()
return 0;
}
也可以使用 detach
不过这样的话线程就和main没有关系了,main函数在执行完依旧会停止程序, 但是 detach
表明线程不需要等待, 如果进程关闭,线程被销毁也不会出错
传参
正在在()中传递就可以了
using namespace std;
void run(string name){
for (int i; i <= 10; i++){
cout << i << endl;
Sleep(1000);
}
}
int main() {
//让该线程执行run函数
string name = "laowang";
thread t(run, name) ;
cout << "执行了main函数 " <<endl;
t.join()
return 0;
}
获取线程id
this_thread::get_id()
t.get_id()