草庐IT

c++ - 使用 g++ 4.8 时缺少 std::vector::erase() 的 const_iterator 重载

followingexample不会使用g++4.8.2编译:#include#includeusingnamespacestd;intmain(){vectorv{1,2,3};v.erase(v.cbegin());//Compilercomplainsreturn0;}编译器说了以下内容。(它不是很可读,但它提示vector::const_iterator和vector::iterator之间没有已知的转换。)prog.cpp:Infunction‘intmain()’:prog.cpp:8:20:error:nomatchingfunctionforcallto‘std::ve

c++ - 如何将 std::vector::emplace_back 用于 vector<vector<int>>?

vector>res;res.emplace_back({1,2});//changetores.push_back({1,2});wouldwork这给我错误main.cpp:61:25:error:nomatchingfunctionforcallto‘std::vector>::emplace_back()’main.cpp:61:25:note:candidateis:Infileincludedfrom/usr/include/c++/4.7/vector:70:0,from/usr/include/c++/4.7/bits/random.h:34,from/usr/incl

c++ - 从字符串 vector 中删除空元素

我正在尝试制作一个处理INI文件的小程序,以便在以后的项目中使用,首先是在加载到内存中后减小其大小。因此,其中vLine是一个包含文件内容的vectorfor(unsignedinti=0;i在打印vLine时,我会留下空格,其中曾经存在以分号开头的行,例如1.2.property3.property4.5.property使用resize()似乎是从列表中删除最后一个元素,而不是删除这些空白部分。在我使用erase()删除仅包含空格的行时存在同样的问题。是否可以在保留vLine顺序的同时删除这些空元素?(很抱歉在这里没有使用迭代器。) 最佳答案

c++ - 根据字符串大小对字符串 vector 进行排序

这个问题在这里已经有了答案:sortingvectorofvectorofstringsinC++(4个答案)关闭9年前。我想知道如何对字符串vector进行排序,使字符数最少的字符串位于vector的顶部。例如,如果vector中包含ABCD、ABCDE、ABC。ABC到达顶部。我很想知道如何使用sort_if实现这一点以及谓词是什么样的?也欢迎任何其他方法

c++ - 如何打印类型 vector<pair<char, int>> 来筛选 c++?

我有一个返回值vector的方法>,但我不知道如何打印这个vector的内容。我试图遍历内容,但出现编译器错误。这是我尝试过的示例。vector>output;for(inti=0;i 最佳答案 std::pair的元素是first和second数据成员,因此对循环的简单修改将打印出内容:for(inti=0;i在C++11中,元素也可以通过tuple方式访问,通过std::get,cout(output[i])(output[i])在C++11中,您还可以选择使用基于范围的循环来迭代容器的所有元素:for(constauto&p:

c++ - *临时*排序 vector 的好方法是什么?

我有一个std::vector,我需要根据选定的算法对某些操作进行排序,但在其余时间保持其原始状态(例如,按输入时间排序的项目)。显然我可以使用std::copy创建一个临时vector并对其进行排序,但我想知道是否有更好的方法,可能是通过为输入的项目加上时间戳。干杯 最佳答案 您可以创建一个std::vector来保存第一个vector的所有索引。然后,您可以根据需要对索引vector进行排序。这应该很快,最重要的是,这并不意味着您必须复制第一个vector(这可能成本更高!)。 关于

C++: vector 边界

我来自Java,目前正在学习C++。我正在使用Stroustrup的ProgammingPrinciplesandPracticeofUsingC++。我现在正在使用vector。在第117页上,他说访问vector的不存在元素将导致运行时错误(在Java中相同,索引越界)。我正在使用MinGW编译器,当我编译并运行这段代码时:#include#include#includeintmain(){std::vectorv(6);v[8]=10;std::cout它给我作为输出10。更有趣的是,如果我不修改不存在的vector元素(我只是打印它期望运行时错误或至少一个默认值)它会打印一些大

c++ - 如何定义双括号/双迭代器运算符,类似于 Vector of Vectors'?

我正在移植使用非常大的float组的代码,这可能会触发从c到c++的malloc失败。我问了一个问题,关于我应该使用vectors还是deques和NikiYoshiuchi慷慨地向我提供了这个安全包装类型的例子:templateclassVectorDeque{private:enumTYPE{NONE,DEQUE,VECTOR};std::dequem_d;std::vectorm_v;TYPEm_type;...public:voidresize(size_tn){switch(m_type){caseNONE:try{m_v.resize(n);m_type=VECTOR;}c

c++ - 如何调用 std::vector 中包含的对象的构造函数?

当我创建对象的std::vector时,并不总是调用这些对象的构造函数。#include#includeusingnamespacestd;structC{intid;staticintn;C(){id=n++;}//notcalled//C(){id=3;}//ok,called};intC::n=0;intmain(){vectorvc;vc.resize(10);cout这是我得到的输出:C::n=10:01:02:0...这是我想要的:C::n=100:01:12:2...在这个例子中,我是否被迫调整vector的大小,然后“手动”初始化它的元素?原因可能是vector的元素没

c++ - vector<string>::iterator - 如何找到元素的位置

我正在使用以下代码在string类型的std::vector中查找字符串。但是如何返回特定元素的位置呢?代码:#include#include#includeusingnamespacestd;intmain(){vectorvec;vector::iteratorit;vec.push_back("H");vec.push_back("i");vec.push_back("g");vec.push_back("h");vec.push_back("l");vec.push_back("a");vec.push_back("n");vec.push_back("d");vec.push