zoukankan      html  css  js  c++  java
  • 用vector建立2D数组

        vector< vector<int> > //一定要有空格,否则认为移位运算符。

        vector<vector<int> > array(3) ,申请保存3个向量的vector,array[i]返回的是第i个向量,同理array[i][j]返回的是第i个向量的第j个元素。

       问题到这里,你可能会得意的说:"我明白了,很简单吗!"。别急,还有一些细节问题:如下   
        vector< vector<int> >   array2(3);   
        array2[1][2] = 9;   
        我保证你的程序会segement   failed,原因就是你没有指定向量的大小,用push_back可以解决这个问array2[1].push_back(9);但是好象不太爽。就不能用operator[]吗?答案是肯定的。不过要多加几个步骤,如下:   
        for (int i=0; i < 3; i++)   
           array[i].resize(3);

      这样,你就定义了一个3X3的数组了(另一个3在   申明时定义的)。而且你可以随时改变它的大小。 

        #include <iostream>   
    #include <vector>

    using namespace std;

    void main()
    {
    vector< vector<int> > array(3);

    for (int i = 0; i < 3; i++)
    array[i].resize(3); //设置数组的大小3X3
    //现在你可以和使用数组一样使用这个vector
    for (i=0; i < 3;i++)
    for (int j=0; j<3; j++)
    array[i][j]=(i*j);
    //增加一句 printf("%d",j);,会出现 j; ' : undeclared identifier

    //输出
    for ( i=0; i < 3; i++)
    {
    for(int j=0;j<3;j++) //为什么要加int 否则出现 j; ' : undeclared identifier
    cout << array[i][j] << "";
    cout<<endl;
    }


    array.resize(5);
    array[3].resize(3);
    array[4].resize(3);


    //现在是5X3的数组了
    for ( i=0; i < 5; i++)
    for (int j=0; j < 3; j++)
    array[i][j] = (i*j);

    for ( i=0; i<5; i++)
    {
    for (int j=0; j<3; j++)
    cout<<array[i][j]<<"";
    cout<<endl;
    }
    }

       我是在VC6编译的这个程序,错误也是基于VC6.0的。注意这个程序i,j 的作用域问题,第一次定义i时,i的作用域相当于是整个函数,第一次定义j时,j包含在外层的第一次定义i的for内,作用域只是在i的for循环内。是局部变量. 

     for的作用域在VC6.0和VS2010是不同的,具体看下一篇文章。

      

  • 相关阅读:
    机器学习之决策树与随机森林模型
    深度学习入门篇--手把手教你用 TensorFlow 训练模型
    Android 性能测试之方向与框架篇
    机器学习:从入门到第一个模型
    5分钟教你玩转 sklearn 机器学习(上)
    Hbase 技术细节笔记(上)
    五年 Web 开发者 star 的 github 整理说明
    腾讯云发布第三代云服务器矩阵,开放更强计算力赋能产业智能化
    为什么要用深度学习来做个性化推荐 CTR 预估
    云 MongoDB 优化让 LBS 服务性能提升十倍
  • 原文地址:https://www.cnblogs.com/youxin/p/2434022.html
Copyright © 2011-2022 走看看