首页 > TAG信息列表 > c-standard-library

c-将std :: map复制到对的std :: vector中

我正在尝试将地图复制到向量对中,因此可以根据向量对中的第二个数据成员对向量进行排序.我已经这样解决了: void mappedWordsListSorter(){ for (auto itr = mappedWordsList.begin(); itr != mappedWordsList.end(); ++itr){ vectorWordsList.push_back(*itr); } sort(v

为什么在C 20中不推荐使用std :: rel_ops ::运算符?

根据cppreference.com,将在C 20中弃用std :: rel_ops :: operator!=,>,< =,> =. 背后的理由是什么?解决方法:在C 20中,你得到three-way comparison(运算符< =>),如果提供的话自动“生成”default comparisons: struct A { // You only need to implement a single operator. st

c – 我可以获取标准库中定义的函数的地址吗?

请考虑以下代码: #include <cctype> #include <functional> #include <iostream> int main() { std::invoke(std::boolalpha, std::cout); // #1 using ctype_func = int(*)(int); char c = std::invoke(static_cast<ctype_func>(std::tolowe

C Filehandling:ios :: app和ios :: ate之间的区别?

写入文件时,ios :: ate和ios:app之间的区别是什么. 在我看来,ios :: app使你能够在文件中移动,而使用ios :: ate它只能在文件末尾读/写.它是否正确?解决方法:这是相反的方式.设置ios :: ate时,初始位置将是文件的结尾,但此后您可以自由查找.设置ios :: app时,所有输出操作都在文件末

c – std :: is_trivially_copyable错了吗?

考虑到cppreference和当前的c工作草案,如果符合以下条件,则可以轻松复制一个类: >每个复制构造函数都很简单或被删除 >每个移动构造函数都是微不足道的或删除的>每个复制赋值运算符都很简单或被删除>每个移动赋值运算符都很简单或被删除>至少一个复制构造函数,移动构造函数,复制赋值

c – *迭代器导致段错误

我正试图通过列表.以下是一些声明: list<CG1_Edge*> ActiveEdges; list<CG1_Edge*>::iterator ActiveEdgeIterator; 有时,此代码段错误在第2行: for (this->ActiveEdgeIterator = this->ActiveEdges.begin(); this->ActiveEdgeIterator != this->ActiveEdges.end(); ++this-&

C和C标准库函数如何查找文件的结尾?

fseek(myFILEptr,0,SEEK_END)和myifstream.seekg(0,std :: ios :: end)如何工作? 他们是否必须检查每个角色,并且他们的时间复杂度与文件的大小成线性关系?它比那更聪明吗?典型的文件系统提供哪些信息来处理? 哪些部分是由语言标准解决的,哪些不是?对于那些没有标准的部件,是否有事实上

c – 标准库是否有比较器反转机制?

我知道标准库有std::reverse_iterator<...>,给定迭代器类型,它可以用来获得它的反向(类型). 它是否也有类似的机制来反转用于排序/排序的比较器?采用比较器类型并产生对应于相反顺序的比较器(假设顺序是可逆的)?例如 与std :: reverse_comparator< std :: greater< int>>等同于std ::

c – 标准中术语相同,相等,等同的含义

标准中至少有三个含义相似的术语:相同,相同和等同.所有这些都在算法描述时使用.比如说,std :: adjacent_find: Searches the range [first, last) for two consecutive identical elements. 但比较器的描述说: binary predicate which returns ​true if the elements should be

c – str.clear()和str =“”之间的区别

我有一个C std :: string str我已设置为某个字符串,现在想要重置,以便可以再次使用它.调用str.clear()vs str =“”之间有区别吗? 编辑.澄清一下:我通过在它上面添加一个char数组缓冲区来重用str:str.append(buf)解决方法:没有有效的区别.根据实现,使用clear()可能比分配给零的char指

c – 如何检查迭代器指定的范围是否有效?

许多标准库容器都具有接受迭代器指定范围的操作.例如,std :: list :: assign(首先是InputIterator,最后是InputIterator). 但是因为许多这些操作不会抛出异常,如果[first,last]指定的范围无效,则会导致未定义的行为. 那么什么是有效范围?我认为这意味着它首先出现在容器中,或者等于

c – 为什么全局命名空间中的sort函数?

为什么C中的全局命名空间中有一个排序函数?为什么这段代码会编译? #include <iostream> #include <vector> int main() { std::vector<int> array(10); sort(array.begin(), array.end()); } PS:clang –std = c 11 –stdlib = libc ./test.cpp解决方法:sort不在全局命名空

c – 迭代包含在两个范围的交集中的对象

标准库中是否有某些东西允许我迭代包含在两个范围的交集中的对象? 特别是,给定一个函数对象动作,我想获得一个相当于的程序 /* some container supporting a push_back operation */ intersection; std::set_intersection(first1, last1, first2, last2, std::back_inserter(in

c – 构建大型(ish)无序集合,并在开头提供所有可用数据

我有一种情况需要优化无序集的创建.预期的元素数量约为5-25M.我的第一个想法是,我应事先准备好所有数据并做类似的事情 unordered_set s(data); 代替 for (auto& elem : data) s.insert(elem); STL无序集可以使用批量加载方法并加速其创建吗?如果我在表格构造之前知道预期

c – 为什么std :: unique_lock不是从std :: lock_guard派生的

std :: lock_guard和std :: unique_lock接口在它们的公共部分(构造函数和析构函数)中看起来非常相似. 为什么他们之间没有等级关系?解决方法:它们具有不可替代的语义: lock_guard保证在整个生命周期内都被锁定.unique_lock不保证不会遵循“IS A”规则(unique_lock不能成为lock_guard,

在iostream或C中的其他地方有什么叫时间吗?

代码编译没有错误,但时间无处可宣. 幸运的是,错误已经消失,因为我将名称更改为mtime.但错误的本质是什么?时间是什么? 这个程序的输出是1.我想知道文件iostream或某个地方是否有任何调用时间. #include <iostream> int main() { std::cout << time << std::endl; return 0;

c – 在lambda上使用条件运算符调用std :: any_of会产生意外结果

这是我最近在VS2012中编写的一些代码: ///<summary>Lambda: Returns true if the field is significant within a baseline context</summary> const auto IsSignificantBaselineField = [](const field_info & field)->bool { //Some lines remove