c++中的array数组和vector数组

我觉得实验一下会记得比较牢,话不多直接上代码。

下面是array数组,感觉用的不多。

//cpp 风格数组 array
#include <iostream>
#include <array>
#include <vector>

using namespace std;

int main()
{
    array<int , 6> myint = {1 , 2 , 34, 45 , 0 , -2};
    for(int i = 0 ; i < myint.size() ; i++)  //size 获取长度,vector也是这样获取长度的
        cout << myint[i] <<"  " << (void *)&myint[i] << endl;

    array<int  , 5> a1 = {1 , 2 ,3  ,4 ,5};
    array<int ,  5> a2 = {0 , -1 , -2 , -3 , -5};
    array <int , 5> a3 = {8, 9 , 10 , 11 , 22};
    array<array<int , 5> , 3> a = {a1 , a2 , a3};

    for(int i = 0 ; i < a.size() ; i++)
    {
        for(int j = 0 ; j < a[0].size() ; j++)
            cout << a[i][j] << " ";
        cout << endl;
    }
    cout <<endl;

    for(auto i : a)  //c++11语法
    {
        for(auto j : i)
            cout << j << " ";
        cout <<endl;
    }
    cout <<endl;
}

下面是vector数组,觉得挺强大的。

一些基本的操作函数也不过 push_back() 尾部插入, pop_back() 尾部删除, size() 获取大小, erase() 指定位置删除, clear() 清空, insert() 指定位置插入 , empty() 判断数组是否为空 为空返回true, front() 返回第一个元素的引用, back() 返回最后一个元素的引用, begin() 返回首元素的迭代器, end() 返回尾元素的迭代器。

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

int main()
{
    vector<double>db;  //数组的大小可变 堆上的数组不一定是连续的
    double m;
    for(int i = 0 ; i < 4 ; i++)
    {
        cin >> m;          //不能直接cin输入到db中  因为还没分配内存
        db.push_back(m); //插入数据  自动变长
        cout << db[i] << "   " << (void*)&db[i] <<endl;
    }
        cout << db[1] << "   " << (void*)&db[1] << endl << endl;

        cout << &db <<endl;  //db不是指针

    for(auto i : db)  //这些i 和下面的ia ib ....都在栈上
    {
        cout << i << "  " << (void *)&i << endl;  //&i只能取首地址
    }

    cout << endl << endl;

    auto ia = db.begin();  //开始
    auto ib = db.end(); //结束
    for( ; ia != ib ; ia++)
    {
        cout << *ia << "   ";
    }
    cout <<endl;

    auto iia = db.rbegin();  //从尾部
    auto iib = db.rend();
    for( ; iia != iib ; iia++)
    {
        cout << *iia << " - ";
    }
}
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int >a1 , a2;
    vector<int >a3;

    a1.push_back(2);

    a2.push_back(3);
    a2.push_back(4);
    a2.push_back(5);

    a3.push_back(10);
    a3.push_back(99);

    vector<vector<int>> a = {a1 , a2 , a3};
    for( auto i : a)
    {
        for(auto j : i)
            cout << j << "   ";
        cout <<endl;
    }

    //多个vector可以实现嵌套  实现锯齿多维数组  长度可以不确定
    //多个array嵌套可以实现多维数组 但是长度必须等长

}
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector <string> str;

    str.push_back("WEL come!");
    str.push_back("Hello");
    str.push_back("World");
    str.push_back("China");
    str.pop_back(); //尾部删除一个
    //str.clear(); //清空

    for(auto ia = str.begin() ; ia != str.end() ; ia++)
    {
        if((*ia) == "Hello")
        {
            str.erase(ia);          //删除之后begin会发生变化
         //   break;
        }
        cout << *ia << endl;
    }

    str.erase(str.begin() + 1); // 删除

    cout << endl;

    for(auto i : str)  // 两种遍历输出  下面是另一种
    {
        cout << i << "    ";
    }
    cout << endl;
    str.insert(str.begin() +1 , "HHHH"); //不能越界插入  可以在范围内插入 

     for(auto i : str)  // 两种遍历输出  下面是另一种
    {
        cout << i << "    ";
    }
}
时间: 2024-10-15 20:03:37

c++中的array数组和vector数组的相关文章

[JavaScript]JavaScript中的Array

JavaScript中的Array 今天较全面地学习到了JS中的Array,也就是数组.写博文一篇来总结一下学习和使用过程中关于Array中的一些误区和常用API,加深一下印象. 关于Array最全面的API在此,MDN 阮一峰阮老师的Array教程 Array的定义 来自MDN的定义: JavaScript的Array对象是用于构造数组的全局对象,数组是类似于列表的高阶对象 来自阮一峰老师教程的定义: 数组(array)是按次序排列的一组值.每个值的位置都有编号(从0开始),整个数组用方括号表

STL之vector,数组线性容器array,list容器,算法find,find_if,bind1st,仿函数

 1.STL(Standard Template Library,是用泛型技术来设计完成的实例)的概念与组成 Iterator(迭代器) Container(容器) Algorithm(算法) Adaptors(配接器) STL的六大组件分别是: 容器(Container) 算法(Algorithm) 迭代器(Iterator) 仿函数(Function object) 适配器(Adapter) 空间配置器(allocator):只能分配内存等 2.容器与算法 案例如下: #include<

Java中对Array数组的常用操作

目录: 声明数组: 初始化数组: 查看数组长度: 遍历数组: int数组转成string数组: 从array中创建arraylist: 数组中是否包含某一个值: 将数组转成set集合: 将数组转成list集合: Arrays.fill()填充数组: 数组排序: 复制数组: 比较两个数组: 去重复: 查询数组中的最大值和最小值: 备注:文内代码具有关联性. 1.声明数组: String [] arr; int arr1[]; String[] array=new String[5]; int sc

【LeetCode-面试算法经典-Java实现】【033-Search in Rotated Sorted Array(在旋转数组中搜索)】

[033-Search in Rotated Sorted Array(在旋转数组中搜索)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search.

观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?

在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array object. 简单的说就是根据参数,返回数组的一部分的copy.所以了解其内部实现才能确定它是如何工作的.所以查看V8源码中的Array.js     可以看到如下的代码: 一.方法  ArraySlice,源码地址,直接添加到Array.prototype上的"入口",内部经过参数.类型

【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】

[026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for anot

JavaScript中的Array数组详解

ECMAScript中的数组与其他多数语言中的数组有着相当大的区别,虽然数组都是数据的有序列表,但是与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据.也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象,而且ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据. 数组的创建 创建数组的基本方式有两种,第一种是使用Array构造函数. var arr = new Array(); 如果预先知道数组要保存

Javascript中的Array(数组) 、{}(映射) 与JSON解析

做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2.js,源码地址https://github.com/douglascrockford/JSON-js. 2.将json字符串转为javascript对象,可以使用javascript自带的eval函数. 3.javascript中可以使用typeof查看变量的类型. 4.要访问json字段,必须是

【LeetCode-面试算法经典-Java实现】【153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)】

[153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You m