c++、Java常用数据结构及其使用方法

C++


vector

#include<iostream>
#include<vector>
using namespece std;

int main(){
    //初始化
    vector<int> vec1;
    vector<int> vec2(3);
    vector<int> vec3(3,2);
    vector<int> vec4(vec3);
    vector<int> vec5( vec3.begin(), vec3.end() );
    vector<int> b(10,1);
    vector<int> a;

    //常用操作
    a.assign(b.begin(),b.begin()+3)//    b为向量,将b的前三个元素赋值给a
    a.assign(4,2)          //a有4个元素,每个元素都为2
    a.back()              //返回a的最后一个元素
    a[i]                     //a的第i个元素
    a.front()                //a的第一个元素
    a.clear()                //清除a中的元素
    a.empty()                //判断a是否为空,空返回True,不空返回False
    a.pop_back()             //删除a的最后一个元素
    a.erase(a.begin(),a.begin()+3)  //删除
    a.push_back(8)            //在向量最后添加 8
    a.insert(a.begin(),5)        //在向量开始位置插入一个 5
    a.insert(a.begin(),3,5)        //在向量开始位置添加三个 5
    a.size()                         //向量中元素的个数
    a.capacity()                    //返回a在内存中总共可以容纳的元素个数
    a.resize(10)                //重置a的size,多则删,少则补,其值随机
    a.resize(10,2)                //重置a的size,多则删,少则补,其值补充为 2


    //vector的遍历
    vector<int> vec = new vector<int>(10,2);
    for(vector<int>::iterator it = vec.begin(); it < vec.end(); it++){
        cout<<*it;
    }

}

 

List

#include<iostream>
#include<list>
using namespece std;

//这里的list是双向的

int main(){
    //初始化
    list<int> lst1;
    list<int> lst2(3);
    list<int> lst3(3,2);
    list<int> lst4(lst3);
    list<int> lst5(lst3.begin(),lst3,end());


    //常用操作
    lst1.assign();  //
    lst1.back();
    lst1.begin() ; //第一个元素的迭代器
    lst1.end();     //末尾元素的迭代器
    lst1.rbegin() ; //指向倒数第一个元素的逆向迭代器
    lst1.rend();     //指向开头位置的逆向迭代器 
    lst1.clear();
    lst1.empty();
    lst1.erase();
    lst1.front();   //第一个元素
    lst1.insert(lst1.begin()+5,10);
    lst1.max_size();
    lst1.pop_back(); //删除最后一个元素
    lst1.pop_front(); //删除第一个元素
    lst1.push_back(); //在list的末尾添加一个元素
    lst1.push_front(); //在list的头部添加一个元素
    lst1.size();
    lst1.unique();   //删除list中的重复元素
    lst1.sort();     //给list排序

    //遍历
    for(list<int>::const_iteratoriter = lst1.begin(); iter != lst1.end(); iter++){
        cout<<*iter;
    }
    cout<<endl;
}

map

#include<iostream>
#include<map>
#include<string>
using namespace std;


int main(){

    map<int,string> mapstring;
    //插入数据的第一种方式(这里如果键不是基本数据类型需要重载运算符,因为map存储使用的是红黑                       //树,必须保证可以比较大小)
    mapstring.insert(pair<int,string>(1,"apple1"));
    mapstring.insert(pair<int,string>(2,"apple2"));
    mapstring.insert(pair<int,string>(3,"apple3"));

    //插入数据的第二种方式
    mapstring.insert(map<int,string>::value_type(4,"apple4"));
    mapstring.insert(map<int,string>::value_type(5,"apple5"));
    mapstring.insert(map<int,string>::value_type(6,"apple6"));

    //插入数据的第三种方式(如果map中已经有插入的键存在,则会覆盖它对应的值)
    mapstring[7] = "apple7";
    mapstring[8] = "apple8";
    mapstring[9] = "apple9";

    //map的遍历
    map<int,string>::iterator ite;
    for(ite = mapstring.begin(); ite!=mapstring.end(); ite++){
        cout<<ite->first<<ite->second<<endl;
    }


    //map的常用操作
    map.find(key);//返回的是迭代器,如果没有找到其值为map.end()
    map.size();  //返回map已存入数据的数量
    iterator map.erase(iterator it)  //通过一个条目删除
    iterator map.erase(iterator begin, iterator end) //通过开始和结束删除一个范围内的元素
    size_type map.erase(const Key&key);        //通过关键字删除
    map.clear();   //删除全部
    map.rbegin();
    map.rend();
    map.count(value); //返回指定元素value出现的次数

}

stack

#include<iostream>
#include<stack>
#include<string>
using namespace std;

int main(){
    stack<string> stack1;
    stack1.push("one");
    stack1.push("two");

    cout<< stack1.size()<<endl;

    cout<< stack1.top() <<endl;

    stack1.pop();
    cout<<stakc1.emtpy()==1<<endl;
    stack1.pop();
    cout<<stakc1.emtpy()==1<<endl;
}

queue

#include<iostream>
#include<queue>
#include<string>
using namespace std;

int main(){
    queue<string> queue1;
    queue1.push("one");
    queue1.push("two");

    cout<<queue1.front()<<endl;

    cout<<queue1.back()<<endl;

    queue1.pop();

    cout<<queue1.size()<<endl;

    cout<<queue1.empty()==1<<endl;//如果为空返回1,不为空返回0

}

Java


ArrayList

import java.util.ArrayList;

public static void main(String []args){
    ArrayList<int> arrlst = new ArrayList<>();
    arrlst.add(1);
    arrlst.add(2);
    arrlst.add(3);
    
    arrlst.addAll(arrlst_another);
    
    arrlst.remove(3);

    arrlst.removeAt(1);

    arrlst.removeRange(start_index,end_index);
    
    arrlst.insert();

    arrlst.contains(1);
}

LinkedList

import java.util.LinkedList;

//既可以做队列也可以做双端队列
public static void main(String[] args){

    LinkedList<int> lnklst =  new LinkedList<>();

    lnklst.getFirst();   //得到第一个元素
    lnklst.getLast();    //得到最后一个元素
    lnklst.removeFirst();    //移除第一个元素
    lnklst.removeLast();    //移除最后一个元素
    lnklst.addFirst();        //在最开始位置添加节点
    lnklst.addLast();        //在最后添加节点

}

stack

import java.util.Stack;


public static void main(String []args){
    Stack<Integer> st = new Stack<>();

    st.push(new Integer(3));
    System.out.println(st.peek());

    st.pop();
    st.empty();

    st.search(object);//返回对象在栈中的位置,从下标1开始
}

queue

import java.util.LinkedList;
import java.util.Queue;

//LinkedList 继承了Queue,可以直接使用LinkedList做Queue

public static void main(String []args){
    Queue<int> queue = new LinkedList<>();
    queue.offer(1);
    queue.offer(2);
    queue.offer(3);
    
    System.out.println(queue.size());
    
    int get_first_method1 = queue.element();
    
    int get_first_method2 = queue.peek();

    int get_poll = queue.poll();
}

map

import java.util.HashMap;
//java的map有很多种,此处就使用的最基本的HashMap
public static void main(String []args){
    Map<String, String> map = new HashMap<String, String>();
    map.put("key1", "value1");
    map.put("key2", "value2");


    //常用操作
    map.clear();
    map.remove(object key);
    map.put(object key, object value);
    map.putAll(Map map_other);
    map.entrySet();     //返回 Map 中所包含映射的 Set 视图。Set 中的每个元素都是一个     //Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者//的键元素和值元素
    map.keySet();    //返回 Map 中所包含键的 Set 视图。删除 Set 中的元素还将删除 Map 中相应//的映射(键和值)
    map.values();
    map.get(object key);
    map.containsKey(object key);
    map.containsValue(object value);
    map.isEmpty();
    map.size();



    //map的遍历
    //使用keySet()的遍历
    for (String key : map.keySet()) {
        System.out.println(key + " :" + map.get(key));
    }
    
    //使用entrySet()的遍历
    for (Map.Entry<String, String> entry : map.entrySet()) {
        System.out.println(entry.getKey() + " :" + entry.getValue());
    }

    //使用迭代器的遍历
    Iterator<String> iterator = map.keySet().iterator();
    while (iterator.hasNext()) {
        String key = iterator.next();
        System.out.println(key + " :" + map.get(key));
    }
    
    //使用entrySet()的迭代器遍历
    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, String> entry = iterator.next();
        System.out.println(entry.getKey() + " :" + entry.getValue());
    }    

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值