Типы примитивов указателей в C++?

Я задавался вопросом о последнем конструкторе для std::string упомянутый здесь. Это говорит:

template string (InputIterator begin, InputIterator end);

Если InputIterator целочисленный тип, ведет себя, поскольку шестая версия конструктора (одно право выше этого) преобразованием типа начинается и заканчивается для вызова его:

string(static_cast(begin),static_cast(end));

В любом другом случае параметры взяты в качестве итераторов, и содержание инициализируется со значениями элементов, которые идут от элемента, отнесенного итератором, начинаются к элементу прямо перед тем, отнесенным к концу итератора.

Таким образом, что это означает если InputIterator a char * ?

Править: Хорошо, мое плохое. Я просто понял, что это говорит, что целочисленный тип, не тип примитива в документации, таким образом, вопрос не относится к тому примеру. Но тем не менее, примитивы указателей?

5
задан Björn Pollex 16 March 2010 в 14:43
поделиться

3 ответа

В C++ нет понятия "примитивных" типов; целые числа являются фундаментальными типами, а указатели - составными типами.

В данном случае char* не может быть преобразован ни в size_t, ни в char, поэтому он будет взят в качестве параметра шаблона InputIterator.

9
ответ дан 14 December 2019 в 01:05
поделиться

Указатели C ++ довольно хорошо реализуют концепцию InputIterator (в конце концов, итераторы STL являются обобщением указателей C ++). Таким образом, два аргумента рассматриваются как указатели на массив символов, обозначающих первый и «один прошедший конец» элементы, необходимые для инициализации строки.

0
ответ дан 14 December 2019 в 01:05
поделиться
char * str = "Some string";
std::string s(str, str+6); // s = "Some s";
0
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

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