本着Go语言的精神,简单的语法被认为是非常重要的,这里有一个C ++中更简单的数组声明的提议:
int value;
int_1 list;
int_2 table;
int_3 cube;
RECT rect;
RECT_1 rects;
使用typedef,可以扩展为:
int value;
vector<int> list;
vector<vector<int> > table;
vector<vector<vector<int> > > cube;
RECT rect;
vector<RECT> rects;
你会使用它吗,还是有这么简单的语法?
修改
扩展语法中存在错误。将vector< int>
修复为vector< vector< int> >
..
答案 0 :(得分:2)
名称带有语义,没有别的。 int_1
在意义方面没有传达太多,而vector< int >
在这里很清楚。
答案 1 :(得分:1)
我知道更简单的语法是受欢迎的,特别是在C ++中,控制字符(点,括号,括号,半列)经常在代码中引入图形噪声。
但为什么要使用数字来识别数组呢?这是数组大小吗?在这种情况下,vector<int>
可能不合适......
我会选择像intArray
这样简单的东西。但同样,当程序员看到这个时,你必须平衡好处和WTF效应。
编辑:哇,基于您的编辑,看起来数字代表维度。它可能比简单地使用typedef更棘手,因为多维数组具有困难的语义。您可以根据需要按维度初始化数组维度。
什么时候实际上是最困难的部分,在开始时初始化所有内容可能更简单,但是大数据可能会迫使您在开始时初始化维度。
答案 2 :(得分:0)
我不会。
这怎么这么简单?
此外,C ++中数组的语法是:
int value;
int list[1];
int table[2];
int cube[3];
RECT rect;
RECT rects[1];
不确定这是你的模糊的意图,因为我没有在1个单元格数组中看到感觉。
答案 3 :(得分:0)
我个人不会用它。也许如果你做的宏会扩展到元组:
_(int, int) int_pair; // tr1::tuple<int, int>
_(int, int, int) coord_3d; // tr1::tuple<int, int, int>
如果你不喜欢_
作为宏,那么你可能想看看使用不常用的东西。
答案 4 :(得分:0)
选择数组的向量似乎有些奇怪。为什么不std::(tr1::)array
?
但是这样的事情怎么样:
#include <vector>
template <class T, size_t N>
struct Nested
{
typedef std::vector< typename Nested<T, N - 1>::type > type;
};
template <class T>
struct Nested<T, 0u>
{
typedef T type;
};
int main()
{
Nested<int, 2>::type table;
table.push_back(Nested<int, 1>::type());
table.front().push_back(10);
}
缺少模板typedef,直到C ++ 0x,你可以添加:
template <class T, size_t N>
using NestedVector = typename Nested<T, N>::type
//usage:
NestedVector<int, 3> vec; //vector<vector<vector<int>>>