Выражение C ++: векторная ошибка индекса вне строки Строка: 1733

Вам нужно создать соответствующий вложенный список

m <- matrix(c(1,22,23,34,4,87,23,7,92),nrow=3,byrow=T)
colnames(m)<-c('X1','X2','X3')

m1 <- apply(m,1, function(x) {
     list(itemID = unname(x[1]), 
          recommendedItems = lapply(unname(x[2:3]), function(y) {
             list(itemID = y)}
          ))
       })


 cat(toJSON(m1))
[
  {
    "itemID":      1,
    "recommendedItems": [
      {
        "itemID":     22 
      },
      {
        "itemID":     23 
      } 
    ] 
  },
{
    "itemID":     34,
    "recommendedItems": [
      {
        "itemID":      4 
      },
      {
        "itemID":     87 
      } 
    ] 
  },
{
    "itemID":     23,
    "recommendedItems": [
      {
        "itemID":      7 
      },
      {
        "itemID":     92 
      } 
    ] 
  } 
]
1
задан Leo Wang 5 March 2019 в 04:18
поделиться

2 ответа

sizeof не говорит вам длину вектора. Он сообщает вам размер (в байтах) фактического объекта.

Чтобы получить количество элементов, хранящихся в векторе, используйте unsorted.size().

Обратите внимание, что в C ++ 11 и более поздних версиях вы можете итерировать свой вектор с помощью цикла на основе диапазона:

for (const auto& str : unsorted) {
    double x = stod(str);
    if (!isnan(x)) {
        sanitised.push_back(x);
    }
}
0
ответ дан paddy 5 March 2019 в 04:18
поделиться

Если вы хотите получить размер вектора (количество элементов), вы должны использовать vector.size() вместо sizeof(vector), который возвращает вам размер вектора в памяти, подсчитанной в символах (стандарт C ++).

0
ответ дан Andrew Petrov 5 March 2019 в 04:18
поделиться
Другие вопросы по тегам:

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