小编mda*_*sev的帖子

如何将两个数组压缩为一个包含值的字符串数组

例如,如果我有两个看起来像这样的数组:

var array1 = ['a','b'];
var array2 = [1, 1];
Run Code Online (Sandbox Code Playgroud)

输出数组应该是:

var newArray = ['a:1', 'b:1']
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

使用作为参数传递的std :: intializer_list初始化std :: array

我正在用C++实现一个Matrix类,我希望能够用一个初始化列表来初始化它,如下所示:

Matrix<double, 2, 3> m({{1,2,1}, 
                        {0,1,1}});
Run Code Online (Sandbox Code Playgroud)

在类中我实现了这样的构造函数:

template<typename Ty, unsigned int rows, unsigned int cols>
class Matrix
{
    std::array<std::array<Ty, cols>, rows> data;
public:
    Matrix(const std::initializer_list<std::initializer_list<Ty>>& list)
    {
        int i = 0;
        for (auto& list_row : list)
        {
            int j = 0;
            for (auto& list_value : list_row)
            {
                data[i][j++] = list_value;
            }
            i++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码工作,但我有几个问题.是否可以使它安全,所以它只需要一定大小的初始化列表(矩阵的大小),其次我可以使代码更简洁 - 我曾想象过这样的事情:

Matrix(const std::initializer_list<std::initializer_list<Ty>>& list)
    : data(list)
{ }
Run Code Online (Sandbox Code Playgroud)

它不起作用,但任何更好的方法,将不胜感激.

c++ stl initializer-list c++11 stdarray

2
推荐指数
1
解决办法
68
查看次数

sprintf将字符串插入到自身中

看看这段代码:

char *c = "%c %s %c";
char *r = malloc(100 * sizeof(char));
printf(c, 65, c, 66);
Run Code Online (Sandbox Code Playgroud)

它按照我的预期和打印工作A %c %s %c B.但是当我尝试使用sprintf时:

char *c = "%c %s %c";
char *r = malloc(100 * sizeof(char));
sprintf(r, c, 65, c, 66);
printf(r);
Run Code Online (Sandbox Code Playgroud)

它输出A B.我知道如果在重叠的对象之间进行复制,结果是未定义的.我不知道这是否适用于我的情况,因为源和目标不重叠,只有格式字符串和其中一个参数.我的主要问题是如何在printf没有打印的情况下获得行为,而是将结果存储到内存中.顺便说一句,我也尝试过sprintf,它的工作也出乎意料.

c printf

2
推荐指数
1
解决办法
257
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

c++11 ×1

initializer-list ×1

javascript ×1

printf ×1

stdarray ×1

stl ×1