指针是C ++中的原始类型吗?

时间:2010-03-16 14:37:15

标签: c++ string pointers primitive-types

我想知道std::string提到here的最后一个构造函数。它说:

template<class InputIterator> string (InputIterator begin, InputIterator end);

如果InputIterator是一个整数类型,则通过类型转换开始和结束来表现为第六个构造函数版本(正好在此之上):

string(static_cast<size_t>(begin),static_cast<char>(end));

在任何其他情况下,参数都被视为迭代器,并且内容被初始化,其中元素的值从迭代器引用的元素开始,直到迭代器引用的元素之前的元素。

那么,InputIteratorchar *是什么意思呢?

编辑:好的,我的坏。我刚刚意识到它在文档中说的是整数类型,而不是原始类型,因此该问题不适用于该示例。但仍然是指针基元?

3 个答案:

答案 0 :(得分:9)

C ++没有“原始”类型的概念;整数是基本类型,指针是复合类型。

在这种情况下,char*无法转换为size_tchar,因此会将其视为InputIterator模板参数。

答案 1 :(得分:0)

char * str = "Some string";
std::string s(str, str+6); // s = "Some s";

答案 2 :(得分:0)

C ++指针很好地实现了InputIterator的概念(毕竟,STL迭代器是C ++指针的概括)。因此,这两个参数被视为指向char数组的指针,指定初始化字符串所需的第一个和“一个过去结束”元素。