草庐IT

不插入

全部标签

c++ - std::map 插入错误:没有运算符 "<"匹配这些操作数

在尝试提高我的C++和STL熟练程度时,遇到了std::map的问题,该问题由我定义的结构键入。相关代码:typedefstructkey_t{inta;intb;booloperator==(constkey_t&rhs){return(a==rhs.a)&&(b==rhs.b);}booloperatorfooMap;voidfunc(void){key_tkey;key.a=1;key.b=2;fooMap.insert(std::pair(key,100));}错误看起来像这样:"/opt/[redacted]/include/functional",line133:error

c++ - 避免在 unordered_map 插入中进行额外处理

我有一个std::unordered_map,我希望两者都递增std::pair中的第一个值,通过key散列>,并创建对key的引用。例如:std::unordered_map>hash;hash[key].first++;autoit(hash.find(key));int&my_ref(it->first);我可以不使用[]运算符,而是使用insert()插入数据,但我会分配一对,即使它是稍后释放,因为hash可能已经有key——虽然不确定。让它更清楚://If"key"isalreadyinserted,thepair(s)willbeallocated//andthendeal

C++ - 插入 Vector - 在迭代器之后还是之前?

上下文是:未知大小的数据集,它不断迭代,但在初始化后插入最少(初始化速度不是问题)。插入vector后元素位置困惑:如果我们在vector为空时在vector.begin()处插入,它会在地址.begin()处创建一个元素。如果我们在vector不为空时在vector.begin()处插入,它会将.begin()处的现有元素向前移动一个,还是将新元素放在.begin()之后?类似地,如果在插入新元素之前遍历vector并匹配vector元素中的特定条件,如果我们插入如下:vector.insert(迭代器,new_element)它是在当前迭代元素之后还是之前插入元素?提前致谢。中号

c++ - 插入排序还是选择排序的变体?

我有一个代码片段here.测试了几个案例,似乎工作正常。学习了算法后,我一下子写出了插入排序的代码,但是有疑问,这真的是传统的插入排序吗?我觉得这可能是选择排序的变体(调整版),这是我困惑的原因。具体来说,这是值得关注的领域:(给定n元素的数组a)for(i=1;i此外,这种方法的比较或交换次数是多了还是少了?在此先感谢您的帮助。 最佳答案 你的问题最直接的答案是是,就是插入排序。这是一种非常低效的插入排序,但它仍然是插入排序。您的代码缺少决定性的步骤,即一旦确定元素的位置,就可以停止比较,然后对已排序的序列进行移位操作,从而为新元

c++ - 插入以设置为 "Fixed"大小循环

所以我想将我的set中所有元素的两倍插入回set中。但显然我需要获取结束迭代器,这样我就不会一直迭代新元素。(别担心,我检查过,set::insert不会使迭代器无效:http://www.cplusplus.com/reference/set/set/insert/#validity)所以给定输入setfoo={1,2,3},这就是我所做的:for(autoit=begin(foo),finish=end(foo);it!=finish;++it){foo.insert(*it*2);}我希望我的集合包含:1,2,3,4,6惊喜!它包含:-2147483648,-1073741824

c++ - 如何在 SQLite 中插入新行 ("\n") 字符?

在尝试插入类似的内容时:"Hello\nWorld"SQLite抛出如下错误:Message:unrecognizedtoken:"'Hello";"(alsofewothererrors)即使我将上面的字符串转换为"Hello''\nWorld"或"Hello\"\n\"World",这些转义字符序列不会在这种情况下工作。我目前使用C++语言,像插入任何其他简单字符串列一样插入此列。我尝试了上面的转义序列(即使我在互联网上读到,它们不适用于\n)。如何在SQLite数据库中插入换行符和其他特殊字符? 最佳答案 在SQL中,没有转义

c++ - 多索引插入失败返回( boost )

我目前正在使用Boost的多索引来帮助跟踪数据包通过系统的次数。每次系统接触数据包时,其IP地址都会添加到一个字符串中,以逗号分隔。然后我遍历该字符串,将其标记化并将找到的每个IP添加到多索引中。由于IP现在设置为唯一,因此不可能将同一个IP添加到多重索引中两次。然后应该发生的是与IP地址关联的值应该递增,计算数据包通过同一IP的次数。无论如何,我的问题就在这里。当我使用类似STLmap的东西时,我会得到一个响应,让我知道由于map中已经存在重复键而无法添加键。Boost的多索引是否提供类似的东西?我知道如果我尝试插入相同的IP,它会失败,但我怎么知道它失败了?这是我当前代码的一部分:

c++ - 使用 makefile 将时间戳插入可执行文件名称

我有一个简单的make文件,我想将当前日期和时间插入到它创建的可执行文件中。类似于:NOW=$(date+"%c")附加到exe名称。最好的方法是什么?谢谢! 最佳答案 我想您已经有了一个创建应用程序的Makefile。因此,您可以添加以下内容:#Use':='insteadof'='toavoidmultipleevaluationofNOW.#Substituteproblematiccharacterswithunderscoreusingtr,#makedoesn'tlikespacesand':'infilenames.N

c++ - 将 CStringW 插入 std::wostringstream 时出现问题

我正在将MFC程序从MBCS转换为Unicode。我发现插入运算符//charstd::ostringstreamc_oss;CStringAc_s("Hello");c_oss我希望这会打印“Hello\nWorld\n”,但它会打印“Hello\n14,5E6,B38\n”。也就是说,它打印的是w_s数据的地址,而不是数据。如果我调试w_oss知道为什么wchar_t版本与char版本的工作方式不同吗? 最佳答案 operator的宽字符版本是一个模板,因此需要精确的参数匹配。没有用户定义的转换,例如CStringW::oper

c++ - 有没有办法防止在 STL unordered_map 上插入或删除?

我经常使用带有固定/常量键但可变值的unordered_maps。示例:如果您有一个enumDimension{X,Y},您可能希望为每个存储一个数据点,但不允许对map进行插入或删除。更新正常。初始化示例:typedefstd::unordered_mapDimension_To_Size_Map;//assumestd::hashhastemplatespecialisationforenumDimension_To_Size_Mapdimension_To_Size_Map={{Dimension.X,0},{Dimension.Y,0}};dimension_To_Size_M