相关疑难解决方法(0)

如何在C++中使用数组?

C++从C继承了数组,几乎无处不在.C++提供了易于使用且不易出错的抽象(std::vector<T>自C++ 98和C++ 11std::array<T, n>以来),因此对数组的需求并不像在C中那样频繁出现.但是,当您阅读遗产时代码或与用C编写的库交互,你应该牢牢掌握数组如何工作.

本FAQ分为五个部分:

  1. 类型级别的数组和访问元素
  2. 数组创建和初始化
  3. 赋值和参数传递
  4. 多维数组和指针数组
  5. 使用数组时常见的陷阱

如果您觉得此常见问题解答中缺少重要内容,请写下答案并将其作为附加部分链接到此处.

在下文中,"数组"表示"C数组",而不是类模板std::array.假定了C声明符语法的基本知识.请注意,面对异常,手动使用newdelete如下所示是非常危险的,但这是另一个常见问题解答的主题.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ arrays pointers c++-faq multidimensional-array

469
推荐指数
5
解决办法
12万
查看次数

如何获取原始数据的std :: vector指针?

我正在尝试std::vector用作char数组.

我的函数接受一个void指针:

void process_data(const void *data);
Run Code Online (Sandbox Code Playgroud)

在我刚刚使用此代码之前:

char something[] = "my data here";
process_data(something);
Run Code Online (Sandbox Code Playgroud)

哪个按预期工作.

但现在我需要动态性std::vector,所以我尝试了这个代码:

vector<char> something;
*cut*
process_data(something);
Run Code Online (Sandbox Code Playgroud)

问题是,如何将char矢量传递给我的函数,以便我可以访问矢量原始数据(无论是哪种格式 - 浮点数等)?

我试过这个:

process_data(&something);
Run Code Online (Sandbox Code Playgroud)

还有这个:

process_data(&something.begin());
Run Code Online (Sandbox Code Playgroud)

但是它返回了指向乱码数据的指针,后者发出了警告:warning C4238: nonstandard extension used : class rvalue used as lvalue.

c++ stl vector

150
推荐指数
3
解决办法
13万
查看次数

标签 统计

c++ ×2

arrays ×1

c++-faq ×1

multidimensional-array ×1

pointers ×1

stl ×1

vector ×1