草庐IT

c++ - 将空终止的 const char* 字符串数组转换为 std::vector< std::string >

我有一个VisualStudio2008C++函数,我在其中获得了一个空终止字符串数组constchar*以及该数组中字符串的数量。我正在寻找一种巧妙的方法来转换constchar*的数组在std::vector///@paramcount-numberofstringsinthearray///@paramarray-arrayofnull-terminatedstrings///@return-avectorofstlstringsstd::vectorConvert(intcount,constchar*array[]);Boost可以,STL可以。

c++ - 在 erase() 之后保持一个有效的 vector::iterator

编辑:我收到了很多答案,告诉我应该将删除分开到另一个循环中。也许我说得不够清楚,但我在最后一段中表示我想找到除此之外的解决方案。即保持当前的代码结构,但使用一些鲜为人知的C++fu使其工作。好吧,我知道在vector上调用erase()会使元素及其后所有元素的迭代器失效,而erase()会返回一个迭代器到下一个有效的迭代器,但如果删除发生在其他地方怎么办?我有以下情况(简化):警告:不要假设这是完整的代码。下面显示的内容被极度简化以说明我的问题。下面显示的所有类和方法实际上要复杂得多。classChild{Parent*parent;}classParent{vectorchild;}

c++ - 具有 const 成员的结构 vector ?

假设我有#include#includeusingnamespacestd;structStudent{conststringname;intgrade;Student(conststring&name):name(name){}};那么,我该如何保持学生的vector?intmain(){vectorv;//errorC2582:'operator='functionisunavailablein'Student'v.push_back(Student("john"));}有没有办法做到这一点,还是我必须在堆上分配所有学生,然后存储一个指向每个学生的指针?

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元素(我只是打印它期望运行时错误或至少一个默认值)它会打印一些大