草庐IT

STL_container_type

全部标签

c++ - 显示 STL 数据时缺少面孔

我为ASCIISTL格式编写了一个简单的解析器。当我尝试使用提供的法线渲染三角形时,生成的对象缺少许多面:它应该是这样的:我已经尝试过的:明确禁用背面剔除(尽管之前不应该启用)确保启用了深度缓冲区这是一个重现错误的最小示例程序:#include#include#include#includeintmain(intargc,char**argv){SDL_Init(SDL_INIT_VIDEO);intscreen_w=1280,screen_h=720;SDL_Window*win=SDL_CreateWindow("test",20,20,screen_w,screen_h,SDL_

c++ - 什么时候使用迭代器的 `value_type`?

我试图了解何时实际使用了iterator::value_type。因为,迭代器的所有运算符,似乎只使用iterator::pointer和iterator::reference。问题iterator::value_type是否真的用于某些事情?附加问题:迭代器是否继承自std::iterator提出一些语义问题?编辑:要理解我为什么问这个问题,是因为我正在为一种类型的迭代器工作,pointer和reference是代理类。 最佳答案 我可以考虑在通用代码中使用它。假设您在C++11中编写一个对范围求和的通用函数。你可以把它写成tem

c++ - `size_t` 总是 `vector<int>::size_type` 或任何其他容器类型的别名吗?

让我们举一个最简单的例子:公式1:std::vectorvec;//add10E11elementsfor(std::size_tn=0;n公式2:std::vectorvec;//add10E11elementsfor(std::vector::size_typen=0;n当然,unsignedint或任何不合适的数据类型在这里都不起作用,我们必须编译x64。我的问题是:在任何情况下,第一个公式是否会导致问题,或者我们是否可以安全地始终以这种更短的表示法来编写它?如果它们很容易覆盖(x86、任何其他容器、size_type的其他应用程序),我也会对类似的设置感兴趣。

c++ - char_traits<char16_t>::int_type 的大小不够大吗?

考虑以下程序:#include#include#includeintmain(int,char**){std::basic_stringstreamstream;stream.put(u'\u0100');std::cout输出是:Bad:0Bad:0Bad:1设置badbit的原因似乎是因为如果字符等于std::char_traits::eof(),'put'设置badbit。我现在不能再投入流中了。在http://en.cppreference.com/w/cpp/string/char_traits它指出:int_type:anintegertypethatcanholdallv

c++ - 在可变参数模板中实现 STL 函数

我一直在做一个小项目来跟上可变参数模板的速度。我实现了一个小的多维数组。我现在想定义一个对给定位置的最近邻居进行操作的函数——是否有一种优雅的方法来检索数组中给定位置的邻居的值?templatestructMArr{typedefstd::array::type,size>type;std::array,size>data;MArr&operator[](inti){returndata[i];}};templatestructMArr{typedefstd::arraytype;typedata;T&operator[](inti){returndata[i];}};附录:我有点清楚

c++ - 将 std::type_index 作为模板参数传递给函数模板

考虑以下代码(工作正常):namespacefruit{structapple{};}namespacelanguage{structenglish{};}typedefstd::pairmyPairType;std::unordered_mapmyMap={{"paul",{"likes",std::type_index(typeid(fruit::apple))}},{"jonas",{"likes",std::type_index(typeid(language::english))}}};现在我有以下功能模板:templatevoidGenerateProfile(void*d

C++/STL 我应该使用哪种算法来检查容器是否有重复项?

是否有任何STL算法可以判断容器是否具有重复元素(使用operator==或给定谓词)?让我们考虑这两个vector:std::vectorv1{1,2,3};std::vectorv2{1,2,1};我希望有这样的功能:std::is_exclusive(v1.begin(),v1.end());//returningtruestd::is_exclusive(v2.begin(),v2.end());//returningfalse有这么简单的功能吗?我找不到任何(找到std::unique,但这会修改​​vector...)注意:我不是在问如何“检查容器是否有重复项”,我知道我该

c++ - 如何编写通用特征以将 T::value_type 与其他特征相匹配?

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭4年前。Improvethisquestion我正在尝试创建一种可以检测的“包装特征”,对于某些T和一些现有的一元特征Concept,即:T是“可迭代的”,并且T::value_type满足Concept这很有用,因为我有其他代码可能需要各种类型,包括std::vector,我想将此包装器特征用于enable_if所述代码中的各种功能。这是一个

c++ - 使用具有未定义行为的(STL)拷贝?

在评估中,我选择了选项LINEI上的运行时错误。没有未定义行为这样的选项,尽管我认为这是正确的选择。我不确定,但我认为评估有误。我编译并运行了该程序,它确实打印了3,9,0,2,1,4,5,使用三个不同的编译器(Cpp.sh,here和本地MacOSX).程序是否因LINEI存在未定义行为?#include#include#includeusingnamespacestd;voidprinter(inti){coutv1(mynumbers,mynumbers+7);copy(mynumbers,mynumbers+7,v1.end());//LINEIfor_each(v1.begi

c++ - 我的 type_trait 在模板化/非模板化代码中的不同行为

在下面的代码片段中,has_bar在main和DoStuff方法中的行为不同:在main方法中,a_bar==false和b_bar==true。当我执行这个时,我得到2x“Foo”作为输出。为什么?#includestructA{voidFoo(){std::coutstructhas_bar:std::false_type{};templatestructhas_bar>:std::true_type{};templatevoidDoStuff(Tt){ifconstexpr(has_bar::value){t.Bar();}else{t.Foo();}}intmain(){Aa;