如何在C++中将数组转换为矢量指针

How to Convert Arrays to Vector Pointers in C++?

本文关键字:转换 指针 数组 C++      更新时间:2023-10-16

我正在尝试将数组转换为矢量指针。我尝试使用std::copy,但是,这产生了SegFault错误。有办法做到这一点吗?非常感谢,我真的很感激。

#include <iostream>
#include <iterator>
#include <algorithm>
int main () {
int myints[]={10,20,30,40,50,60,70};
std::vector<int> *myvector (7);
std::copy ( myints, myints+7, *myvector->begin() );
}

我并不完全相信你真的想要一个指向向量的指针,因为这种情况似乎不太可能(而且std::vector<int> *myvector(7);没有实例化向量,它创建了一个指向std::vector的指针。如果你想实例化向量,这很有效:

std::vector<int> myVector(myInts, myInts + (sizeof(myInts)/sizeof(*myInts)));

否则,

指针:

auto myVector = new std::vector<int>(myInts, myInts + (sizeof(myInts)/sizeof(*myInts)));

智能指针:

auto myVector = std::make_unique<std::vector<int>>(myInts, myInts + (sizeof(myInts)/sizeof(*myInts)));

#include <iostream>
#include <iterator>
#include <algorithm>
#include <memory>
int main () {
int myints[]={10,20,30,40,50,60,70};
auto myvector = std::make_unique<std::vector<int>>(7);
std::copy ( myints, myints+7, myvector->begin() );
}

要将其转换为正则向量,请执行以下操作。使用向量指针不是一个好主意,因为它可能会导致不必要的行为。此外,您的矢量指针从未实际构建过。

#include <iostream>
#include <iterator>
#include <algorithm>
int main () {
int myints[]={10,20,30,40,50,60,70};
std::vector<int> myvector (7);
std::copy ( myints, myint+7, myvector.begin() );
}