草庐IT

C++迭代器(iterator)

全部标签

c++ - std::wostream_iterator

为什么C++中没有std::wostream_iterator?这有什么好的理由吗?#include#include#include#includeintmain(){std::vectormyvec={L"first",L"second"};std::wofstreamf("New.txt");//std::copy(myvec.begin(),myvec.end(),std::wostream_iterator(f));//Error//std::copy(myvec.begin(),myvec.end(),std::ostream_iterator(f));//Errorstd:

C++ AMP 迭代具有不同维度的 array_views

我在Windows8上将C++AMP与VisualStudio2012结合使用。我有一个案例,其中我有2Darray_view、experimentData和1Darray_view、experimentFactors。我想遍历2Darray_view的第一个维度和1Darray_view的第一个维度。这就是我所拥有的,但我经常收到错误消息,说没有为此重载。我想遍历第一个维度的numberOfTests。我想要这条线:autotest=experimentData[idx];返回整行数据。我认为array_view上的section方法是执行此操作的方法,但我不知道该怎么做。array

c++ - forward_list::splice_after( const_iterator pos, forward_list& other, const_iterator i ) 功能

我正在阅读有关此功能工作方式的不同解释。cplusplus.com说这个函数应该“直接在i之后移动元素”。然而cppreference.com表示它拼接元素ATi。MSvisualstudio同意cplusplus.com。但是,实际上正确的行为是什么?我倾向于认为“在i之后”移动更合乎逻辑(&不需要N时间来找到前面的节点)。(PS:没有forward-list标签?) 最佳答案 23.3.4.6voidsplice_after(const_iteratorposition,forward_list&x,const_iterator

c++ - R 和 C++ 迭代

我正在尝试使用Rcpp从R编写一个在C++中运行循环的函数。我有一个矩阵Z,它比函数应该返回的矩阵OUT短一行,因为OUT第一行的每个位置都将由标量sigma_0给出。该函数应该实现一个微分方程。每次迭代都取决于矩阵Z的值以及矩阵OUT的先前生成值。我得到的是这个:cppFunction('NumericMatrixsim(NumericMatrixZ,longdoublesigma_0,longdoubledelta,longdoubleomega,longdoublegamma){intnrow=Z.nrow()+1,ncol=Z.ncol();NumericMatrixout(n

c++ - 如何获得非常量迭代器

std::mapdict;...autopmax=dict.begin();//hereigetconstiterator我可以“明确指出”获取的值是非常量类型吗? 最佳答案 如果您的dict不是const,begin将返回std::map::iterator.现在,关键是const,但值不是。auto应该给你一个std::map::iterator;你有相反的证据吗? 关于c++-如何获得非常量迭代器,我们在StackOverflow上找到一个类似的问题:

C++ directory_iterator

自从我使用C++以来已经有一段时间了,请原谅我的新手问题。我编写了以下代码来获取目录内容的列表,它运行良好:for(directory_iteratorend,dir("./");dir!=end;dir++){std::cout“*dir”返回什么,一个“字符数组”指针,一个指向“字符串”对象的指针,还是一个指向“路径”对象的指针?我想将“*dir”(如果它以.cpp结尾)传递给另一个function(),它将在稍后(异步)对其进行操作。我想我需要复制“*dir”。我写了下面的代码:path*_path;for(directory_iteratorend,dir("./");dir!

c++ - vector 迭代器的增量/减量

NicolaiJosuttis的“C++标准库”第9章:STL迭代器指出:以下可能无法在某些平台上编译:std::vectorcoll;//sort,startingwithsecondelement//-NONPORTABLEversionif(coll.size()>1){std::sort(++coll.begin(),col.end());}Dependingontheplatform,thecompilationof++col.begin()mightfail.However,ifyouuseforexample,adequeratherthanavector,thecomp

c++ - 使用 boost::filesystem 3.0 迭代文件

我想遍历目录中与“keyword.txt”匹配的所有文件。我在谷歌搜索了一些解决方案,发现了这个:CanIuseamasktoiteratefilesinadirectorywithBoost?我后来发现,“leaf()”函数已被替换(来源:http://www.boost.org/doc/libs/1_41_0/libs/filesystem/doc/index.htm->转到“已弃用的名称和功能”部分)到目前为止我得到的是这个,但它没有运行。很抱歉这个有点愚蠢的问题,但我或多或少是一个C++初学者。conststd::stringtarget_path("F:\\data\\");

c++ - 使用 std::istream_iterator 读取最多 N 个值

如果我确定我的输入流包含10个值,我可以读取它们std::copy_n(std::istream_iterator(input),10,output);如果我不知道我有多少值,我可以读取所有值std::copy(std::istream_iterator(input),std::istream_iterator(),output);我的问题是如何读取最多10个值。我在这里尝试对I/O错误保持鲁棒性,但似乎copy_n将尝试读取输入的末尾(它不知道它应该停止),并且copy不会在10个值处停止.我必须推出自己的copy_at_most吗?(嗯,显然对copy_n还是有些混淆:std::i

c++ - tbb::concurrent_unordered_map::unsafe_erase 是否会使任何现有的迭代器失效?

我看到tbb::concurrent_unordered_map与std::unordered_map非常接近,同时对于并发是安全的。我也知道unsafe_erase对于insert等不是并发安全的。迭代器文档还声明任何现有的迭代器对于insert仍然有效,查找等问题是,unsafe_erase是否会使除被要求删除的迭代器之外的任何其他迭代器失效?std::unordered_map和std::map当然有这种行为,但它没有在任何地方的concurrent_unordered_map文档中指定。 最佳答案 tbb::unsafe_e