草庐IT

vector_tostr

全部标签

c++ - STL vector 和 c++ : how to . 在没有默认构造函数的情况下调整大小?

我如何告诉STL,特别是对于vector中的方法resize(),使用默认构造函数以外的构造函数以及使用哪些参数来初始化对象?例如:classsomething{inta;something(intvalue);}std::vectormany_things;many_things.resize(20);更一般地,当STL需要创建对象并将参数传递给该构造函数时,如何强制STL使用我的构造函数?在我的情况下,添加默认构造函数不是一种选择,我不希望使用指针数组来解决问题。 最佳答案 使用2参数重载:many_things.resize(

对象 vector 上的 C++ remove_if

我有一个对象vector(顺序很重要)(我们称它们为myobj类),我试图一次删除多个对象。classvectorList{vectormyList;};classmyobj{char*myName;intindex;boolm_bMarkedDelete;}我认为最好的方法是标记特定的myobj对象以进行删除,然后在vector上调用myList.remove_if()。但是,我不确定如何为此使用谓词等。我是否应该在对象中创建一个成员变量,让我说我想删除myobj,然后创建一个谓词来检查是否设置了成员变量?如何将谓词实现为vectorList类的一部分?

对象 vector 上的 C++ remove_if

我有一个对象vector(顺序很重要)(我们称它们为myobj类),我试图一次删除多个对象。classvectorList{vectormyList;};classmyobj{char*myName;intindex;boolm_bMarkedDelete;}我认为最好的方法是标记特定的myobj对象以进行删除,然后在vector上调用myList.remove_if()。但是,我不确定如何为此使用谓词等。我是否应该在对象中创建一个成员变量,让我说我想删除myobj,然后创建一个谓词来检查是否设置了成员变量?如何将谓词实现为vectorList类的一部分?

c++ - 将 vector<T> 转换为 vector<const T>

我有一个vector类型的成员变量(其中T是一个自定义类,但它也可以是int。)我有一个函数,我想从中返回一个指向该vector的指针,但我不希望调用者能够更改vector或其项。所以我希望返回类型为constvector*我尝试过的所有类型转换方法都不起作用。编译器一直提示T与constT不兼容。这里有一些代码演示了我正在尝试做的事情的要点;vectora;constvector*b=(constvector*)(&a);此代码无法为我编译。提前致谢! 最佳答案 如果您有constvector您不能修改容器,也不能修改容器中的任何

c++ - 将 vector<T> 转换为 vector<const T>

我有一个vector类型的成员变量(其中T是一个自定义类,但它也可以是int。)我有一个函数,我想从中返回一个指向该vector的指针,但我不希望调用者能够更改vector或其项。所以我希望返回类型为constvector*我尝试过的所有类型转换方法都不起作用。编译器一直提示T与constT不兼容。这里有一些代码演示了我正在尝试做的事情的要点;vectora;constvector*b=(constvector*)(&a);此代码无法为我编译。提前致谢! 最佳答案 如果您有constvector您不能修改容器,也不能修改容器中的任何

c++ - 为什么在 C++ 中使用 "vector.at(x)"比使用 "vector[x]"更好?

如果我想获得vector中的一个值,我可以使用两个选项:使用[]运算符。或者我可以使用函数.at示例来使用:vectorivec;ivec.push_back(1);现在我可以同时做这两件事intx1=ivec[0];intx2=ivec.at(0);//or我听说使用at是一个更好的选择,因为当我使用该选项时,我可以将它抛出异常。有人可以解释一下吗? 最佳答案 c[i]和c.at(i)的区别在于at()如果i超出vector范围,则抛出std::out_of_range异常,而operator[]只是调用未定义的行为,这意味着任何

c++ - 为什么在 C++ 中使用 "vector.at(x)"比使用 "vector[x]"更好?

如果我想获得vector中的一个值,我可以使用两个选项:使用[]运算符。或者我可以使用函数.at示例来使用:vectorivec;ivec.push_back(1);现在我可以同时做这两件事intx1=ivec[0];intx2=ivec.at(0);//or我听说使用at是一个更好的选择,因为当我使用该选项时,我可以将它抛出异常。有人可以解释一下吗? 最佳答案 c[i]和c.at(i)的区别在于at()如果i超出vector范围,则抛出std::out_of_range异常,而operator[]只是调用未定义的行为,这意味着任何

vector <int>&的C++默认参数?

我有一个函数,voidtest(vector&vec);如何设置vec的默认参数?我试过了voidtest(vector&vec=vector());但是有一个警告“使用了非标准扩展:'默认参数':从'std::vector'转换为'std::vector&'”有没有更好的方法来做到这一点?而不是voidtest(){vectordummy;test(dummy);}问候,投票站 最佳答案 你试过了吗:voidtest(constvector&vec=vector());C++不允许将临时对象绑定(bind)到非常量引用。如果你真的

vector <int>&的C++默认参数?

我有一个函数,voidtest(vector&vec);如何设置vec的默认参数?我试过了voidtest(vector&vec=vector());但是有一个警告“使用了非标准扩展:'默认参数':从'std::vector'转换为'std::vector&'”有没有更好的方法来做到这一点?而不是voidtest(){vectordummy;test(dummy);}问候,投票站 最佳答案 你试过了吗:voidtest(constvector&vec=vector());C++不允许将临时对象绑定(bind)到非常量引用。如果你真的

c++ - vector 的大小与容量?

我对此有点困惑,这两个对我来说看起来都一样。尽管可能会发生容量和大小在不同编译器上可能不同的情况。它可能有何不同。它还说如果我们内存不足,容量就会改变。所有这些我都不清楚。有人可以解释一下吗?(如果可能的话,可以举个例子,或者我可以对任何程序进行任何测试以理解它) 最佳答案 大小不允许在多个编译器之间有所不同。vector的大小是它包含的元素的数量,它直接由您放入vector中的元素数量控制。容量是vector拥有的总空间量。在引擎盖下,vector只使用一个数组。vector的容量是该数组的大小。这总是等于或大于大小。它们之间的区