小编Moi*_*ojo的帖子

如何设置"discrete_distribution"c ++的向量

我正在尝试模拟像马尔可夫链这样的东西并使用discrete_distribution来模拟状态s_i到s_j的变化.但是,当然,这是一个矩阵,而不是矢量.所以我试试.

std::vector <uint16_t> v {{...},
                          {...},
                           ...
                          {...},};

std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

注意:如果我只尝试1个向量,这是uint16_t的向量

// CHANGE v by v[0]
std::vector<std::discrete_distribution <uint64_t>> distr(1, std::discrete_distribution <uint64_t> (vecs[0].begin(), vecs[0].end()));
Run Code Online (Sandbox Code Playgroud)

根据这个答案

我知道

std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );
Run Code Online (Sandbox Code Playgroud)

是不正确的,但我说改变v1到v.来证明可以使用离散分布的向量

c++ random vector

5
推荐指数
1
解决办法
418
查看次数

为什么C ++用零初始化一个std :: vector而不初始化一个std :: array?

如果不想使用零初始化向量,是否浪费时间?

我尝试以下代码:

#include <iostream>
#include <vector>
#include <array>

#define SIZE 10

int main()
{
#ifdef VECTOR

  std::vector<unsigned> arr(SIZE);

#else

  std::array<unsigned, SIZE> arr;

#endif // VECTOR

  for (unsigned n : arr)
    printf("%i ", n);
  printf("\n");

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

与矢量

$ g++ -std=c++11 -D VECTOR test.cpp -o test && ./test 
0 0 0 0 0 0 0 0 0 0 
Run Code Online (Sandbox Code Playgroud)

与数组

g++ -std=c++11  test.cpp -o test && ./test 
-129655920 32766 4196167 0 2 0 4196349 0 1136 0 
Run Code Online (Sandbox Code Playgroud)

我也尝试使用clang ++

那为什么要零呢?顺便说一句,我可以不初始化就声明一个向量吗?

c++ vector

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

未经许可更改内存的值

我有一个2维数组,当我第一次打印数组的数据时,日期打印正确,但另一次数组[last] [i]的数据从i = 0到last - 1.

显然是一个逻辑错误,但我不明白原因,因为我复制并粘贴了for语句.那么......¿C改变数据?

我使用gcc -std=c99但在此之前我尝试使用C++和cout语句.

这是输出截图

#include <stdio.h>

int main(int argc, char *argv[])
{
  unsigned int numero_jugaderes = 11;
  unsigned int numero = numero_jugaderes - 1;

  unsigned int p_a[numero];

  float p_aya[numero][numero];

  for (unsigned int i = 0; i <= numero; i++) {
    p_a[i] = i;
  }

  for (unsigned int i = 0; i <= numero; i++) {
    for (unsigned int j = 0; j <= numero; j++) {
      p_aya[i][j] = (float) (p_a[i] …
Run Code Online (Sandbox Code Playgroud)

c arrays loops

-1
推荐指数
1
解决办法
110
查看次数

标签 统计

c++ ×2

vector ×2

arrays ×1

c ×1

loops ×1

random ×1