欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-13 16:04:45
...

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

}