C++ 通过引用或指针传递向量

C++ 通过引用或指针传递向量,c++,pointers,vector,reference,C++,Pointers,Vector,Reference,我有以下功能: void write_to_File(std::vector<uint16_t> *vector) { std::fstream file; file.open(writePath, std::fstream::out | std::fstream::binary); if (file.is_open()) { file.write(reinterpret_cast<char*>(&(*vector)[0]

我有以下功能:

void write_to_File(std::vector<uint16_t> *vector) {
    std::fstream file;
    file.open(writePath, std::fstream::out | std::fstream::binary);
    if (file.is_open()) {
         file.write(reinterpret_cast<char*>(&(*vector)[0]), vector->size()*sizeof(uint16_t));
    } else {
        std::cout << "file not found!";
        return;
    }
    file.close();
}
void write_to_文件(std::vector*vector){
std::fstream文件;
open(writePath,std::fstream::out | std::fstream::binary);
if(file.is_open()){
write(reinterpret_cast(&(*vector)[0]),vector->size()*sizeof(uint16_t));
}否则{

std::cout如评论中所述,您的正确答案是:

void write_to_File(const std::vector<uint16_t>& vector) {
    std::fstream file;
    file.open(writePath, std::fstream::out | std::fstream::binary);
    if (file.is_open()) {
         const auto ptr = reinterpret_cast<const char*>(&vector[0]);
         file.write(ptr, vector.size()*sizeof(uint16_t));
    } else {
        std::cout << "file not found!";
        return;
    }
    file.close();
}
void写入文件(const std::vector&vector){
std::fstream文件;
open(writePath,std::fstream::out | std::fstream::binary);
if(file.is_open()){
const auto ptr=reinterpret_cast(&vector[0]);
file.write(ptr,vector.size()*sizeof(uint16_t));
}否则{

std::cout Pass by const reference。你可以将其转换为
const char*
@juanchopanza我会因为没有想到这一点而把头撞到墙上的,谢谢。你没有使用指针固有的任何东西,通过引用传递。[OT]:注意端点问题。
const auto ptr
是否必要?您的代码还包含语法错误,
(*vector)
应该只是
向量
,因为它不再是指针,与
->
@箭头相同-不,
常量自动ptr
不是必需的-只是没有它,我会得到水平滚动条,我讨厌水平滚动条。我还碰巧认为代码更容易阅读,因为它分开了“计算数据的位置”和“将数据写入磁盘”(但YMMV)。(当然,修复语法错误是必要的!-并且完成了。)