草庐IT

vector_tostr

全部标签

c++ - 指针的排序 vector

我在尝试对指针vector进行排序时遇到了一点麻烦。这是我到目前为止所做的:classNode{private:vector_children;string_data;...public:voidNode::add_child(Node*child){...sort(_children.begin(),_children.end());}boolNode::operator_data.compare(node._data)==-1);}};如果我这样写,我的小于运算符可以工作:Node*root=newNode("abc");Node*n=newNode("def");cout为什么s

C++ vector 初始容量

我有一些代码使用了数千个vector,每个vector只有4个条目,所以我想将每个vector的初始大小设置为4,这样我就可以通过不保留未使用的内存来优化内存使用。我试过保留方法:vectorbar;bar.reserve(10);但它似乎扩展而不收缩,似乎也没有构造函数可以创建具有指定容量的vector。还有2个额外问题:默认初始容量是多少我可以创建一个具有特定容量的vector吗? 最佳答案 构造函数无法控制vector的容量-没有适用的重载。C++标准不保证默认构造vector的容量vectorbar;.然而,所有众所周知的实

c++ - 使用 STL 查找 vector 中的所有元素

我有一个需要操作的元素集合,调用集合上的成员函数:std::vectorv;...//vectorispopulated调用不带参数的函数非常简单:std::for_each(v.begin(),v.end(),std::mem_fun(&MyType::myfunc));如果我希望调用的函数有一个参数,则可以做类似的事情。我的问题是,如果满足某些条件,我想在vector中的元素上调用一个函数。std::find_if将迭代器返回到满足谓词条件的第一个元素。std::vector::iteratorit=std::find_if(v.begin(),v.end(),MyPred());

c++ - 向 vector 添加多个值

我有一个整数vector,我也想添加多个值,但是使用大量push_backs添加的值太多。有没有在vector末尾添加多个值的方法。类似这样的东西:std::vectorvaluesvalues+={3,9,2,5,8,etc};我发现boost有类似的东西,但我不想包含boost。#includeusingnamespaceboost::assign;{std::vectormyElements;myElements+=1,2,3,4,5;}这似乎是这样声明的:templateinlinelist_inserter>,V>operator+=(std::vector&c,V2v){r

c++ - 更漂亮的 "pointer to last element"语法,std::vector?

我想知道是否有更漂亮的语法来获取指向C++vector中最后一个元素的普通指针(不是迭代器)std::vectorvec;int*ptrToLastOne=&(*(vec.end()-1));//theotherwayIcouldseewasint*ptrToLastOne2=&vec[vec.size()-1];但是这两个都不是很好看! 最佳答案 int*ptrToLastOne=&vec.back();//precondition:!vec.empty() 关于c++-更漂亮的"po

c++ - 如何在 C++ 中随机分配给 vector ?

我是C++新手,经常被告知要使用std::vector而不是new[]。我正在尝试实现此功能,因为我知道vector的大小并希望随机(而不是按顺序)分配给它。但是,当运行它时,我的程序终止并且没有错误输出,所以我很难过。vectorv1;v1.resize(2);v1.insert(v1.begin()+1,"world");v1.insert(v1.begin()+0,"world");cout 最佳答案 别放弃,比那更容易vectorv1(2);v1[1]="world";v1[0]="world";coutvector::in

c++ - 无法创建 constexpr std::vector

我可以创建constexpr标准::数组:constexprstd::arrayvalues{1,2,3,4,5};它工作正常。但我无法创建constexprvector:constexprstd::vectorvec={1,2,3,4,5};它给了我一个错误:thetype'conststd::vector'ofconstexprvariable'vec'isnotliteralconstexprstd::vectorvec={1,2,3,4,5}; 最佳答案 有一个提议要制作std::vectorconstexpr:https:

c++ - 新的 int[size] 与 std::vector

为了分配动态内存,我一直在C++中使用vector。但是最近,在阅读一些源代码时,我发现了“newint[size]”的使用,并在一些研究中发现它也分配了动态内存。谁能给我建议哪个更好?我是从算法和ICPC的角度来看的? 最佳答案 总是更喜欢标准容器。它们具有明确定义的复制语义,异常安全,并正确释放。当你手动分配时,你必须保证释放代码被执行,并且作为成员,你必须编写正确的复制赋值和复制构造函数,在异常情况下做正确的事情而不会泄漏。手动的:int*i=0,*y=0;try{i=newint[64];y=newint[64];}catc

c++ - 从 std::vector 删除范围?

如果我的std::vector有100个元素,我只想保留前10个并删除其余的,有没有方便的方法来做到这一点? 最佳答案 是的,有一个erase接受first和last参数的函数。v.erase(v.begin()+10,v.end()); 关于c++-从std::vector删除范围?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5333574/

c++ - 为什么 std::vector 和 std::string 的比较运算符定义为模板函数?

一个小概述。我正在编写一个提供强大typedef的类模板;通过强typedef,我与仅声明别名的常规typedef形成对比。给出一个想法:usingEmployeeId=StrongTypedef;现在,关于强类型定义和隐式转换有不同的思想流派。其中一所学校说:并非每个整数都是EmployeeId,但每个EmployeeId都是整数,因此您应该允许从EmployeeId到整数的隐式转换。您可以实现它,并编写如下内容:EmployeeIdx(4);assert(x==4);这是有效的,因为x被隐式转换为整数,然后使用整数相等比较。到目前为止,一切都很好。现在,我想用一个整数vector来