Если вы пытаетесь получить доступ к фрейму данных, то использовать вектор будет проще, чем использовать список. Например,
columns_to_access <- c("year", "drv")
mpg[columns_to_access]
Но вы также смешиваете имена столбцов и индексы столбцов, поэтому
mpg[c("year", "drv")]
будут работать, как и
mpg[1:2]
, но не как смесь.
Редактировать: можно использовать смесь, если вы используете пакет "dplyr", как показано в , этот ответ
C++ 0x добавит шаблонные определения типов с помощью using
ключевое слово.
Ваше решение объявляет новый тип, не тип "псевдоним", например, Вы не можете инициализировать a MyVectorType &
(ссылка) с a vector<T>
. Это не могло бы быть проблемой для Вас, но если это, но Вы не хотите ссылаться на вектор в своем коде, можно сделать:
template <typename T>
class MyVectorType {
public:
typedef std::vector<T> type;
};
Наследование не то, что Вы хотите. Более идиоматический подход к эмуляции шаблонного определения типа является этим:
template <typename T> struct MyVectorType {
typedef std::vector<T> t;
};
Обратитесь к определению типа как это:
MyVectorType<T>::t;
C++ не может сделать шаблон из определения типа или определения типа шаблонным классом.
Это зависит от того, под чем Вы подразумеваете typedef
: std::vector<size_t>
законно - даже при том, что size_t
определение типа - и std::string
a typedef
для std::basic_string<char>
.