c++ - 复制通过引用传递给函数的多维 vector

标签 c++ vector

要将通过引用传递的 vector 复制到成员变量,我们可以使用以下代码:

struct B
{
  std::vector<double> c;
  void cpyV(const std::vector<double> &v)
  {
    c = v;
    return;
  }
};

但是要复制一个 2D vector ,类似的代码是行不通的:

struct B
{
  std::vector<std::vector<double> > c;
  void cpyV(const std::vector<std::vector<double> > &v)
  {
    c = v;
    return;
  }
};

我收到错误error: no match for ‘operator=’ in ‘((B*)this)->B::c = v’。复制多维 vector 的正确方法是什么?

最佳答案

同意 - 适合我(Linux 上的 g++ 4.6.1)

#include <stdlib.h>
#include <iostream>
#include <vector>

using namespace std;

struct B
{
  std::vector<std::vector<double> > c;
  void cpyV(const std::vector<std::vector<double> > &v)
  {
    c = v;
    return;
  }
} A;

int main(void)
{
 vector<vector<double> > a, b;
 vector<double> x;

 x.push_back(1.0);
 x.push_back(2.0);
 x.push_back(3.0);

 a.push_back(x);
 a.push_back(x);
 a.push_back(x);

 b = a;

 cout << "a:\n";
 for(unsigned i=0; i<a.size(); i++)
    {
     for(unsigned j=0; j<a[i].size(); j++)
        cout << a[i][j] << "\t";
     cout << "\n";
    }

 cout << "\nb:\n";
 for(unsigned i=0; i<b.size(); i++)
    {
     for(unsigned j=0; j<b[i].size(); j++)
        cout << b[i][j] << "\t";
     cout << "\n";
    }

 A.cpyV(a);

 cout << "\nA.c:\n";
 for(unsigned i=0; i<A.c.size(); i++)
    {
     for(unsigned j=0; j<A.c[i].size(); j++)
        cout << A.c[i][j] << "\t";
     cout << "\n";
    }


 return 0;
}

产生以下内容:

a:
1       2       3
1       2       3
1       2       3

b:
1       2       3
1       2       3
1       2       3

A.c:
1       2       3
1       2       3
1       2       3

关于c++ - 复制通过引用传递给函数的多维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960935/

相关文章:

c++ - 将 ifstream 的一部分读入字符串对象?

c++ - 在知道墙壁在哪里的同时计算房间

C++ 如何动态创建二维 vector

c++ - 小心 vector::reserve?

c++ - 自定义 C++ 迭代器问题

c++ - 使用 cmake 从 github 中包含外部头文件库

c++ - “Transposed .txt file"带有随机字符,这可能吗?

c# - 从远程计算机以编程方式检索 Windows 事件 - Windows XP

c++ - 二维 vector ,重叠和数组中不同类型的对象

c++ - 如何使用循环将 vector 插入队列<vector<int>>?