草庐IT

Iterator

全部标签

c++ - C++ 的链式迭代器

Python的itertools实现了chain迭代器,它本质上连接了许多不同的迭代器,以提供来自单个迭代器的所有内容。C++中有类似的东西吗?快速浏览一下boost库并没有发现类似的东西,这让我很惊讶。这个功能很难实现吗? 最佳答案 在调查类似问题时遇到了这个问题。即使问题很老,现在在C++11和boost1.54时代,使用Boost.Range也很容易做到。图书馆。它具有join-function,它可以将两个范围合并为一个范围。在这里您可能会招致性能损失,因为最低通用范围概念(即SinglePassRangeorForward

时间:2019-05-10 标签:c++uint,unsignedint,int

您好,我有一个程序处理大量vector和这些vector元素的索引,我想知道:uint和unsignedint有区别吗最好使用上述类型之一或仅使用int因为我读到有人说编译器确实更有效地处理int值,但如果我使用int我必须始终检查是否有负idxs,这很痛苦。您认为迭代器更好吗?它比普通索引vectorx[idx]更有效吗?p.s该软件将处理大数据处理,必须具备良好的性能 最佳答案 C++没有定义像uint这样的类型。这必须是“您的”类型,即在您的代码或某个第三方库中定义的类型。可以猜到它与unsignedint相同。可能是unsi

时间:2019-05-10 标签:c++uint,unsignedint,int

您好,我有一个程序处理大量vector和这些vector元素的索引,我想知道:uint和unsignedint有区别吗最好使用上述类型之一或仅使用int因为我读到有人说编译器确实更有效地处理int值,但如果我使用int我必须始终检查是否有负idxs,这很痛苦。您认为迭代器更好吗?它比普通索引vectorx[idx]更有效吗?p.s该软件将处理大数据处理,必须具备良好的性能 最佳答案 C++没有定义像uint这样的类型。这必须是“您的”类型,即在您的代码或某个第三方库中定义的类型。可以猜到它与unsignedint相同。可能是unsi

c++ -++iterator 和 iterator++ 之间的性能差异?

我的同事声称对于对象类型,前增量比后增量更有效例如std::vectorvec;...insertawholebunchofstringsintovec...//iterateoveranddostuffwithvec.Isthismoreefficientthanthenext//loop?std::vector::iteratorit;for(it=vec.begin();it!=vec.end();++it){}//iterateoveranddostuffwithvec.Isthislessefficientthanthepreviousloop?std::vector::it

c++ -++iterator 和 iterator++ 之间的性能差异?

我的同事声称对于对象类型,前增量比后增量更有效例如std::vectorvec;...insertawholebunchofstringsintovec...//iterateoveranddostuffwithvec.Isthismoreefficientthanthenext//loop?std::vector::iteratorit;for(it=vec.begin();it!=vec.end();++it){}//iterateoveranddostuffwithvec.Isthislessefficientthanthepreviousloop?std::vector::it

c++ - std::istream_iterator<> 与 copy_n() 和 friend

下面的代码片段从std::cin中读取三个整数;它将两个写入numbers并丢弃第三个:std::vectornumbers(2);copy_n(std::istream_iterator(std::cin),2,numbers.begin());我希望代码从std::cin中准确读取两个整数,但事实证明这是一个正确的、符合标准的行为。这是对标准的疏忽吗?这种行为的基本原理是什么?从C++03标准中的24.5.1/1开始:Afteritisconstructed,andeverytime++isused,theiteratorreadsandstoresavalueofT.所以在上面的

c++ - std::istream_iterator<> 与 copy_n() 和 friend

下面的代码片段从std::cin中读取三个整数;它将两个写入numbers并丢弃第三个:std::vectornumbers(2);copy_n(std::istream_iterator(std::cin),2,numbers.begin());我希望代码从std::cin中准确读取两个整数,但事实证明这是一个正确的、符合标准的行为。这是对标准的疏忽吗?这种行为的基本原理是什么?从C++03标准中的24.5.1/1开始:Afteritisconstructed,andeverytime++isused,theiteratorreadsandstoresavalueofT.所以在上面的

c++ - 连续迭代器检测

C++17引入了ContiguousIterator的概念http://en.cppreference.com/w/cpp/iterator.然而,似乎没有计划拥有contiguous_iterator_tag(以同样的方式我们现在有random_access_iterator_tag)由std::iterator_traits::iterator_category报告.为什么是contiguous_iterator_tag不见了?是否有确定迭代器是否连续的常规协议(protocol)?还是编译时测试?过去我提到容器如果有.data()转换为指向::value的指针的成员输入有.siz

c++ - 连续迭代器检测

C++17引入了ContiguousIterator的概念http://en.cppreference.com/w/cpp/iterator.然而,似乎没有计划拥有contiguous_iterator_tag(以同样的方式我们现在有random_access_iterator_tag)由std::iterator_traits::iterator_category报告.为什么是contiguous_iterator_tag不见了?是否有确定迭代器是否连续的常规协议(protocol)?还是编译时测试?过去我提到容器如果有.data()转换为指向::value的指针的成员输入有.siz

c++ - 确定字符串是否仅包含字母数字字符(或空格)

我正在编写一个函数来确定字符串是否仅包含字母数字字符和空格。我正在有效地测试它是否匹配正则表达式^[[:alnum:]]+$但不使用正则表达式。这是我目前所拥有的:#includestaticinlineboolis_not_alnum_space(charc){return!(isalpha(c)||isdigit(c)||(c==''));}boolstring_is_valid(conststd::string&str){returnfind_if(str.begin(),str.end(),is_not_alnum_space)==str.end();}有没有更好的解决方案,或