码迷,mamicode.com
首页 > 编程语言 > 详细

C++入门

时间:2019-11-16 19:55:32      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:ras   namespace   front   迭代   first   it!   bool   循环   移除   

一、容器

1.vector数组

主要内容:
①定义方式
②输出单个元素
③遍历输出

主要函数:
①获取大小v.size()
②获取首指针,获取尾指针v.begin()/v.end()

#include <iostream>
#include <vector>
using namespace std;
int main(void){
    //定义方式
    vector<int> v1;
    vector<int> v2(10);
    vector<int> v3(10,4);
    //输出单个元素
    cout << v2[0] << endl;//默认为0
    cout << v3[0] << endl;//输出4
    //获取大小
    cout << v2.size() << endl;
    cout << v3.size() << endl;
    //遍历方式
    for(int i = 0; i < v3.size(); i++){
        cout << v3[i] << " ";
    }
    cout << endl;
    //常用遍历方式:迭代器
    for(auto it = v3.begin(); it!=v3.end(); it++){//输出与上一排相同
        cout << *it << " ";//访问要对it指针取值
    }
    cout << endl;
    return 0;
}

2.Set集合

主要内容
①定义方式
②增删改查
③遍历

主要函数
①插入s.insert()
②查找s.find()
③获取头尾指针s.begin()/s.end()
④删除s.erase()

#include<iostream>
#include<set>
using namespace std;
int main(void){
    //定义方式
    set<int> s;
    //插入元素
    s.insert(3);
    //输出首元素
    cout << *(s.begin()) << endl;
    //循环插入
    for(int i = 1; i <6; i++){
        s.insert(i);
    }
    //迭代输出
    for(auto it = s.begin(); it != s.end(); it++){
        cout << *it << " ";//输出1 1 2 3 4 5
    }

    //查询集合中是否含有该元素
    cout << endl << (s.find(2) != s.end()) << endl;
    cout << (s.find(10) != s.end()) << endl;

    //删除集合中 的某元素
    s.erase(1);
    cout << (s.find(1) != s.end()) <<endl;
    return 0;
}

3.map映射

//unordered_map省去排序过程,如果map超时可使用
#include <iostream>
#include <map>
using namespace std;
int main(void){
    //定义方式
    map<string,int> m;
    //设置键值对的方式
    m["hello"] = 2;
    cout << m["hello"] << endl;
    cout << m["world"] << endl;
    m["world"] = 3;
    m[","] = 1;
    //迭代输出键与值的方式
    for(auto it = m.begin(); it != m.end(); it++){
        cout << it->first << " " << it->second << endl;
    }
    //输出第一个与最后一个键值对的方式
    cout << m.begin()->first << " " << m.begin()->second << endl;
    cout << m.rbegin()->first << " " << m.rbegin()->second << endl;
    return 0;
}

4.stack栈

#include <iostream>
#include <stack>
using namespace std;
int main() {
    stack<int> s;//定义一个空栈s
    for (int i = 0; i < 6; i++) {
        s.push(i);
    }
    cout << s.top() << endl; // 访问s的栈顶元素
    cout << s.size() << endl; // 输出s的元素个数
    s.pop(); // 移除栈顶元素
    return 0;
}

5.queue队列

#include <iostream>
#include <queue>
using namespace std;
int main() {
    queue<int> q;
    for (int i = 0; i < 6; i++) {
        q.push(i);
    }
    cout << q.front() << " " << q.back() << endl;
    cout << q.size() << endl;
    q.pop();
    return 0;
}

二、算法

1.bitset位运算

#include <iostream>
#include <bitset>
using namespace std;
int main(){
    bitset<5> b("11");//5表示w个二进位
    //初始化方式:
    //bitset<5> b; 都为0
    //bitset<5> b(u); u为unsigned int, 如果 u = 1,则被初始化为10000
    //bitset<5> b(s); s为字符串,如”1101“ ->”10110“
    //bitset<5> b(s, pos, n); 从字符串的s[pos]开始,n位长度
    for(int i = 0; i< 5; i++){
        cout<< b[i];
    }
    //很多方法都是针对1的
    cout << endl << b.any();//b中是否存在1的二进制位?
    cout << endl << b.none();//b中不存在1吗?
    cout << endl << b.count();//b中1的二进制位的个数
    cout << endl << b.size();//b中二进制位的个数
    cout << endl << b.test(2);//测试下标为2处是否二进制位为1

    b.set(4);//下标4变为1
    b.reset();//所有位归零
    b.reset(3);//下标3处归零
    b.flip();//b的所有二进制位逐位取反
    unsigned long a =b.to_ulong();//b转换成unsigned long类型
    return 0;

}

2.sort排序

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int a, int b){//自定义cmp函数
    return a > b;
}
int main(void){
    vector<int> v(10);
    for(int i = 0; i < 10; i++){
        cin >> v[i];
    }
    //注意vector传入方式
    sort(v.begin(), v.end());//默认从小到大
    for(auto it = v.begin(); it != v.end(); it++){
        cout << *it << " ";
    }
    
    int arr[10];
    for(int i = 0; i < 10; i++){
        cin >> arr[i];
    }
    //注意数组的传入方式
    sort(arr,arr+10,cmp);//传入自写的cmp,从大到小  
    for(int i = 0; i < 10; i++){
        cout << arr[i] << " ";
    }  
}

三、C11特性

1.auto声明

2.to_string

3.stoi、stod...

#include<iostream>
#include <set>
#include <string>
using namespace std;
int main(void){
    //一、auto声明:自动推断类型 
    auto x = 100;
    auto y = 1.5;
    set<int> s;
    s.insert(4);
    s.insert(2);
    s.insert(5);
    for(set<int>::iterator it = s.begin(); it != s.end(); it++) {
        cout << *it << " ";
    }
    cout << endl;
    for(auto it = s.begin(); it != s.end(); it++){
        cout << *it << " ";
    }
    cout << endl;
        
    //二、 to_string
    string s1 = to_string(123);
    cout << s1 << endl;
    string s2 = to_string(4.5);
    cout << s2 << endl;
    cout << s1 + s2 << endl;
    printf("%s\n", (s1 + s2).c_str());//如果想用printf输出string得加一个.c_str()
    
    
    //三、stoi、stod:string转化为对应的int和double型
    string str = "123";
    int a = stoi(str);
    cout << a << endl;
    
    
    str = "123.44";
    double b = stod(str);
    cout << b << endl;
    
    //stof
    //sstold
    //stol
    //stoll
    //stoul
    //stoull
    return 0; 

}
    

C++入门

标签:ras   namespace   front   迭代   first   it!   bool   循环   移除   

原文地址:https://www.cnblogs.com/Hokkaido-JL/p/11872896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!