2 sinat 24601593 sinat_24601593 于 2016.05.03 11:14 提问

二维的vector里怎么给一维vector添加数据

我已经生成了一个二维vector,但是我需要在后来给里面的每一个vector添加一个数据,下面是我写的代码,可是数据并没有添加到vector里来.

    std::vector <std::vector<std::string>> array;
    std::vector <std::string> x,y;
    x.push_back("3");
    x.push_back("null");
    x.push_back("1");
    x.push_back("2");
    x.push_back("1");
    x.push_back("2");
    y.push_back("4");
    y.push_back("aaa");
    y.push_back("2");
    y.push_back("3");
    y.push_back("11");
    y.push_back("1");
    array.push_back(x);
    array.push_back(y);
    for(auto a : array)
    {
        a.push_back("xxxx");
    }
    for(auto a : array)
    {
        for(auto b : a)
        {
            std::cout << b << " ";
        }
        std::cout << std::endl;
    }

输出的是:
3 null 1 2 1 2
4 aaa 2 3 11 1

1个回答

leilba
leilba   Rxr 2016.05.03 11:39
已采纳

c++ vector内部对存放的内容并不是用指针进行引用的,所以:

  for(auto a : array) // 取出来的a其实是相当于复制了一份出来
    {
                    a.push_back("xxxx"); // 所做的操作仅仅是对复制的东西进行操作,而不是对存在array里面的vector进行操作
    }

改成用指针实现就可以了

 #include "iostream"
#include "string"
#include "vector"
using namespace std;

int main()
{

    vector <vector<string>* > array;
    vector <string> *x = new vector<string>(),*y = new vector<string>();
    x->push_back("3");
    x->push_back("null");
    x->push_back("1");
    x->push_back("2");
    x->push_back("1");
    x->push_back("2");
    y->push_back("4");
    y->push_back("aaa");
    y->push_back("2");
    y->push_back("3");
    y->push_back("11");
    y->push_back("1");
    array.push_back(x);
    array.push_back(y);
    for(auto a : array)
    {
        a->push_back("xxxx");
    }
    for(auto a : array)
    {
        for(auto b : *a)
        {
            cout << b << " ";
        }
        cout << endl;
    }

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++中二维vector赋值
vector > nums(8,vector(13)); //二维数组的行数为8,列数为13。后一定要加一个空格,否则会被判别为操作符>>出错 int b[8][13] = {{0,0,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,0,0,0}, {0,1,1,0,1,0,0,0,0,0,0
为二维vector进行赋值
为二维vector进行赋值
C++中二维Vector初始化的一种方式
C++中二维Vector初始化的一种方式
二维vector遍历
#include #include using namespace std; int main() { vector> ves; vector a{ 1, 2, 3 }; vector b{ 2, 4, 5, 6 }; ves.push_back(a); ves.push_back(b); for (vector>::iterator it = ves.begin(); it !
C++ vector之创建二维数组
头文件:#include <iostream> #include <algorithm> #include <vector> using namespace std;申明二维数组:vector<vector<int>>vec;//嵌套申明此时的vec.size为0,空有其名,没有空间大小,并不能用来访问元素,此时可以向vec中添加一维向量 方案一:vec.push_back(vector<int>
二维 三维 向量vector 定义,初始化
vector> Arrayleim::centernumber, vector((0,0)));
如何将二维数组赋值给vector
vector > a; double b[10][10] = {1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,89,79}; 将b[10][10]值如何赋给a? 一维数组: vector a; int b[5] = {1,2,3,4,5}; a.push_back(b); 二维数组: 如果a的长度给定了,  vector > a; b[5][6] =
C++——二维vector初始化大小方法
初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到) vector<vector<int>> newOne(r, vector<int>(c, 0));2.用resize()来控制大小 vector<vector<int> > res; res.resize(r);//r行 for (int k = 0; k < r;
二维/多维vector在未知维度的前提下的赋值操作
在很多时候,类中二维数组的
C++ 二维vector的初始化问题
今天在写一个程序时,需要使用到二维数组vector&amp;lt;vector&amp;lt;int&amp;gt; &amp;gt;,初始只能确定列数,但是无法确定行数vector&amp;lt;vector&amp;lt;int&amp;gt; &amp;gt; result;但是如果不初始化,直接使用i=0;result[i].push_back(0);            //想把0放入第一行中会报错,这是因为该二维向量为空,寻下标i索引第一行找不到...