如何将一个矢量块复制到另一个矢量块 我使用数组来存储数据,但是我用向量替换了,所以我想用C++操作符替换所有的C操作符。我用memcpy复制了一个内存块 for (i = 0; i < rows_; i++) memcpy((T *) &tmp.data_[cols_ * i], (T *) &a.data_[cols_ * (2 * i + 1)], rows_ * sizeof(T));

如何将一个矢量块复制到另一个矢量块 我使用数组来存储数据,但是我用向量替换了,所以我想用C++操作符替换所有的C操作符。我用memcpy复制了一个内存块 for (i = 0; i < rows_; i++) memcpy((T *) &tmp.data_[cols_ * i], (T *) &a.data_[cols_ * (2 * i + 1)], rows_ * sizeof(T));,c++,memory,C++,Memory,但我收到了以下错误: error: invalid use of member function (did you forget the ‘()’ ?) 例如: 我有一个2xnxn大小的数组,我使用for循环来制作一个nxn数组。例如,我有12345678,我的新数组必须如下:34788。我使用memcpy来实现这一点,但我不知道如何在c++中实现,因为有一个标准算法。它比memcpy更安全,因为它也适用于非POD类型。它有时会针对POD类型进行优化,以产生memcpy。您通常不在标准算法中使

但我收到了以下错误:

error: invalid use of member function (did you forget the ‘()’ ?)
例如:


我有一个2xnxn大小的数组,我使用for循环来制作一个nxn数组。例如,我有12345678,我的新数组必须如下:34788。我使用memcpy来实现这一点,但我不知道如何在c++中实现,因为有一个标准算法。它比memcpy更安全,因为它也适用于非POD类型。它有时会针对POD类型进行优化,以产生memcpy。您通常不在标准算法中使用指针,但必须使用迭代器。要获得迭代器,可以使用
begin()
end()
方法或自由函数。例如:

vector<int> a(10, 5);
vector<int> b(5);

copy(a.begin(), a.begin()+5, b.begin());
向量a(10,5);
载体b(5);
复制(a.begin(),a.begin()+5,b.begin());
嗯,它有本机的
运算符=()
,可用于将一个向量内容复制到另一个向量内容:

std::vector<T> x;
std::vector<T> y;
y = x;
std::向量x;
std::向量y;
y=x;
还有一个可以与迭代器一起使用并允许复制数组切片的方法。

使用,或者如果您从
数组
复制到
向量

  int from_array[10] = {1,2,3,4,5,6,7,8,9,10};

  std::vector<int> to_vector;

  int array_len = sizeof(from_array)/sizeof(int);
  to_vector.reserve(array_len);
  std::copy( from_array, from_array+10, std::back_inserter(to_vector)); 
  or C++11
  std::copy( std::begin(from_array), std::end(from_array), std::back_inserter(to_vector));   

  std::vector<int> to_vector2;
  to_vector2.reserve(array_len);
  to_vector2.assign(from_array, from_array + array_len);
更新:

  const int M = 2;
  const int N = 4;
  int from_array[M][N] = {{1,2,3,4},{5,6,7,8}};

  std::vector<int> to_vector;
  to_vector.reserve(N);
  int start=2;
  int end = 4;
  for (int i=0; i<M; i++)
  {
    std::copy( from_array[i]+start, from_array[i]+end, std::back_inserter(to_vector)); 
  }
const int M=2;
常数int N=4;
来自_数组[M][N]={{1,2,3,4},{5,6,7,8}的int;
std::向量到_向量;
至_向量保留(N);
int start=2;
int-end=4;

对于(int i=0;我试过了吗?
std::copy
。事实上,你也应该在数组中使用它。是的,我试过了:std::copy(tmp.data\uuu[cols\u*i],tmp.data\uu[cols\u*i+rows],a.data\uu[cols\u*(2*i+1)];还有
vector::assign
。运算符=()不适合我,因为我正在重新组织数组块,有一个2xnxn大小的数组,我用for循环来制作一个nxn数组。例如,我有1个2、3、4、5、6、7、8,我的新数组必须是:3 4 7 8。我用MeMCPY来实现这个,但是我不知道如何在C++中实现。
   std::vector<int> v1;
   std::vector<int> v2;
   v2 = v1; // assign operator = should work
v2.swap(v1);
  const int M = 2;
  const int N = 4;
  int from_array[M][N] = {{1,2,3,4},{5,6,7,8}};

  std::vector<int> to_vector;
  to_vector.reserve(N);
  int start=2;
  int end = 4;
  for (int i=0; i<M; i++)
  {
    std::copy( from_array[i]+start, from_array[i]+end, std::back_inserter(to_vector)); 
  }