gpt4 book ai didi

c++ - Array 和 Vector 在编程中的区别

转载 作者:行者123 更新时间:2023-11-30 00:51:32 28 4
gpt4 key购买 nike

我在使用 std::vector 而不是 std::array 时遇到了一个问题。大多数人说,除了内存分配方式外,它们的用途相同(数组为其元素静态分配内存, vector 动态分配内存)。为了澄清我的理解,我尝试了一些但失败了。

我使用数组运行的代码运行良好。

char userInput[MAX_DATA] = { '\0' }; 
std::cout<<"\enter some char: ";
std::cin.getline(userInput, MAX_DATA);
int bytes_sent = send(socketFD, userInput, strlen(userInput), 0);
//send function definition send(__in SOCKET s, __in_bcount(len) const char FAR * buf, __in int len, __in int flags);

通过使用 vector,我更改了我的代码行,而不是上面定义的代码:

std::vector<char> userbuffer;
std::cout<<"\enter some char: ";
cin>>input;// i only want to send only the data i entered here in run time.
int bytes_sent = send(socketFD, userbuffer, userbuffer.size(), 0);
//error C2664: 'send' : cannot convert parameter 2 from 'std::vector<_Ty>' to 'const char* '

我对 C++ STL 概念真的很陌生。有人可以帮我找出我做错了什么吗?我这样做的目的是查看动态内存分配。

最佳答案

(我假设 send_tochar* 作为第二个参数)

std::vector 封装了一个可动态调整大小的数组。您可以获得指向第一个元素地址的元素类型的指针:

&userbuffer[0]

或者,自 C++11 起,通过调用成员函数 data:

userbuffer.data()

这保证有效,因为内部数组是连续存储的。

关于c++ - Array 和 Vector 在编程中的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com