相关疑难解决方法(0)

如何使用std :: array模拟C数组初始化"int arr [] = {e1,e2,e3,...}"的行为?

(注意:这个问题是不必指定元素的数量,仍然允许直接初始化嵌套类型.)
这个问题讨论了C数组的用途int arr[20];.在他的回答中,@ James Kanze展示了C阵列的最后一个据点,它具有独特的初始化特性:

int arr[] = { 1, 3, 3, 7, 0, 4, 2, 0, 3, 1, 4, 1, 5, 9 };
Run Code Online (Sandbox Code Playgroud)

我们没有必要指定元素的数量,万岁!现在遍历它与C++ 11的功能std::beginstd::end<iterator>(或您自己的变体),你永远需要甚至认为它的大小.

现在,有没有(可能是TMP)方法实现同样的目标std::array?使用宏可以使它看起来更好.:)

??? std_array = { "here", "be", "elements" };
Run Code Online (Sandbox Code Playgroud)

编辑:中间版本,从各种答案编译,如下所示:

#include <array>
#include <utility>

template<class T, class... Tail, class Elem = typename std::decay<T>::type>
std::array<Elem,1+sizeof...(Tail)> make_array(T&& head, Tail&&... values)
{
  return { std::forward<T>(head), std::forward<Tail>(values)... };
}

// in code …
Run Code Online (Sandbox Code Playgroud)

c++ arrays templates initialization c++11

133
推荐指数
8
解决办法
1万
查看次数

是否有正当理由在 C++ 中使用 C 风格的数组?

在 TR1 和 C++11之间std::vectorstd::array中,动态和固定大小的数组都有安全的替代方案,它们知道自己的长度并且不会表现出可怕的指针/数组二元性。

所以我的问题是,在 C++ 中是否有任何情况必须使用C 数组(而不是调用 C 库代码),或者完全“禁止”它们是否合理?

编辑:

感谢大家的回答,但事实证明这个问题是重复的

现在我们有了 std::array C 风格的数组还有什么用?

所以我会指示大家去那里看看。

[我不知道如何结束我自己的问题,但如果版主(或更多有投票权的人)路过,请随时将其标记为重复并删除这句话。]

c++ arrays

5
推荐指数
2
解决办法
3745
查看次数

C++ - Float Arrays的向量

我目前正在尝试创建一个包含浮点数组的向量.我有一段难以忍受的时间.

我有以下代码:

float testArray[4] = {20, -3.14/2, 5, -3.14/2};
std::vector<float[4]> inputVector;
std::vector<float[4]>::iterator it = inputVector.begin();
inputVector.insert(it, testArray);
Run Code Online (Sandbox Code Playgroud)

我一直收到一个错误说"数组必须使用大括号括起来的初始化程序初始化"和"无效的数组赋值".我用int的向量(而不是数组的向量)尝试了相同的代码,并且没有任何问题.

我认为存在一个我不理解的根本问题.

任何帮助表示赞赏!

c++ arrays vector

4
推荐指数
1
解决办法
1万
查看次数

什么时候需要删除C样式的数组?

我在阅读另一个问题的绝佳答案,给出了以下具体示例:

char[] array = {'a', 'b', 'c', '\0'};
Run Code Online (Sandbox Code Playgroud)
Thing* t = new Thing[size];
t[someindex].dosomething();

Run Code Online (Sandbox Code Playgroud)

我评论说,作为一种好的做法,您应该添加delete[]第二个示例,因为这是人们忘记导致内存泄漏的位。

但是我不记得您是否需要delete[]一开始。我不认为您会这样做,因为没有,new所以它在堆栈中,但是我不是100%确信那是正确的。

c++ arrays

3
推荐指数
3
解决办法
292
查看次数

标签 统计

arrays ×4

c++ ×4

c++11 ×1

initialization ×1

templates ×1

vector ×1