Матрица с переменной длиной кусочка

Есть два вопроса:

  • Почему он не печатает адрес для символа:

Печать указателей будет печатать адрес для кнопки int* и string*, но распечатает содержимое для char*, поскольку в operator<< имеется специальная перегрузка. Если вам нужен адрес, используйте: static_cast<const void *>(&c);

  • Почему разница адресов между int и string равна 8

На вашей платформе sizeof(int) есть 4, а sizeof(char) - 1, поэтому вам действительно нужно спросить, почему 8 не 5. Причина в том, что строка выравнивается по 4-байтовой границе. Машины работают со словами, а не с байтами, и работают быстрее, если слова не поэтому «разделяют» несколько байтов здесь и несколько байтов. Это называется выравниванием

. Ваша система, вероятно, выравнивается с 4-байтовыми границами. Если у вас 64-разрядная система с 64-битными целыми числами, разница будет 16.

(Примечание: 64-разрядная система обычно относится к размеру указателя, а не к int. Таким образом, 64- битной системы с 4-байтовым int все равно будет иметь значение 8 как 4 + 1 = 5, но округляется до 8. Если sizeof (int) равно 8, тогда 8 + 1 = 9, но это округляет до 16)

0
задан Pankaj Parag 23 February 2019 в 16:23
поделиться

1 ответ

Просто X.insert (i, Y) работает.

def parseX(a, len):
  X = []
  for i in range(len):
    ### Split based on 0th column's value being (i+1)
    Y = a[ a[:,0] == i+1, :][:, [1,2]]
    print(Y.shape)
    X.insert(i, Y)
  #print(len(X))
  return X
0
ответ дан Pankaj Parag 23 February 2019 в 16:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: