草庐IT

vector_tostr

全部标签

c# - 什么是 C# 中 C++ vector 的良好替代品?

我正在努力提高我在其他语言方面的技能,因为我使用c++作为我的主要编程语言。我目前的项目正在敲定C#.net,因为我听说它对于同时了解c++和VB.net的人来说是一种很好的中间语言。通常,当在c++中处理未知数量的元素时,我会将变量声明为vector,然后从那里开始。c#中似乎不存在vector,而在我当前的程序中,我一直在使用arraylists,但我开始怀疑使用arraylists是否是一个好习惯,因为我在某处读到它是.net1.0的遗留物很长的问题简短-c#最常用的列表类型是什么? 最佳答案 如果您的目标是.NET2.0之前

c++ - 在 C++ 中重用 vector

我有一个声明为全局变量的vector,我需要能够重用它。例如,我正在读取多个数据文件,解析数据以创建对象,然后将这些对象存储在vector中。vectorobjVector(100);voidmain(){while(THERE_ARE_MORE_FILES_TO_READ){//PseudocodeReadFile();ParseFileIntoVector();ProcessObjectsInVector();/*HereIwantto'reset'thevectorto100emptyobjectsagain*/}}我可以重置vector吗?成为vectorobjVector(1

c++ - 具有不同签名的 std::function vector

我有许多具有不同签名的回调函数。理想情况下,我想将它们放在一个vector中,并根据某些条件调用适当的vector。例如voidfunc1(conststd::string&value);voidfunc2(conststd::string&value,intmin,intmax);conststd::vector>functions{func1,func2,};我意识到以上是不可能的,但我想知道是否有任何替代方案我应该考虑。我还没有找到任何东西,我已经尝试了std::bind但没有设法实现我想要的。这样的事情可能吗? 最佳答案 在

c++ - 为什么 std::vector<bool> 没有 .data()?

std::vector的特化,如C++1123.3.7/1中所述,不声明data()成员(例如提到here和here)。问题是:为什么std::vector没有.data()?这与为什么bool的vector是同一个问题。s没有连续存储在内存中。不这样做有什么好处?为什么可以将指针指向bool的数组?不退吗? 最佳答案 Whydoesastd::vectorhaveno.data()?因为std::vector在1个字节中存储多个值。把它想象成一个压缩存储系统,其中每个boolean值都需要1位。因此,不是每个内存块有一个元素(每个

c++ - std::vector.pop_back() 会改变 vector 的容量吗?

如果我在程序开始时使用resize()和reserve()将std::vector分配到一定的大小和容量,是否有可能pop_back()可能会“破坏”预留容量并导致重新分配? 最佳答案 没有。缩小vector容量的唯一方法是交换技巧templatevoidshrink_capacity(std::vector&v){std::vector(v.begin(),v.end()).swap(v);}即使这样也不能保证按照标准工作。(虽然很难想象它不会工作的实现。)据我所知,C++标准的下一个版本(以前是C++0x,但现在变成了C++1x

c++ - 如何为 vector <string> 设置默认参数以在类中的默认构造函数中使用?

例如,一个名为Table的类,其构造函数为:Table(stringname="",vectormods);如何将vector初始化为空?编辑:忘了说这是C++。 最佳答案 Table(stringname="",vectormods);如果你想让vector在构造函数中为空,那么mods.clear();或mods.swap(vector());如果你想作为默认参数:Table(stringname="",vectormods=vector());与任何其他默认参数一样。 关于c++-

C++ vector max_size();

在32位系统上。std::vector::max_size()返回232-1,大小为char—1个字节std::vector::max_size()返回230-1,大小为int—4字节std::vector::max_size()返回229-1,大小为double—8字节谁能告诉我max_size()取决于什么?max_size()的返回值是多少?如果它在64位系统上运行。 最佳答案 max_size()是理论上可以放入vector中的最大项目数。在32位系统上,理论上您可以分配4Gb==2^32,即2^32char值、2^30in

c++ - 如何将 vector 的一部分作为函数参数传递?

我在C++程序中使用vector,我需要将该vector的一部分传递给函数。如果是C,我需要执行以下操作(使用数组):intarr[5]={1,2,3,4,5};func(arr+2);//Passthepartofthearray{3,4,5}除了用最后一部分创建一个新的vector之外还有其他方法吗? 最佳答案 一种常见的方法是传递迭代器范围。这适用于所有类型的范围,包括那些属于标准库容器和普通数组的范围:templatevoidfunc(Iteratorstart,Iteratorend){for(Iteratorit=sta

c++ - Boost vector 与 STL vector

如何boost::numeric::ublas::vector和std::vector比较运行效率?假设我可以从使用std::vector转换整个程序是否安全?使用boost::numeric::ublas::vector只需写:#includeusingnamespaceboost::numeric::ublas;而不是#include?我可以像在所有方面都是STLvector一样使用boostvector吗?从执行函数使用boostvector?他们使用相同的迭代器吗?它们在C++0x中工作吗?它们适用于基于范围的循环吗? 最佳答案

c++ - std::vector 迭代器失效

之前有几个关于这个问题的问题;我的理解是,调用std::vector::erase只会使位于已删除元素位置的迭代器无效。但是,在删除一个元素之后,该位置的迭代器是否仍然有效(当然,前提是它在删除后不指向end())?我对如何实现vector的理解似乎表明迭代器绝对可用,但我不完全确定它是否会导致未定义的行为。作为我正在谈论的示例,以下代码从vector中删除所有奇数。此代码是否会导致未定义的行为?typedefstd::vectorvectype;vectypevec;for(inti=0;i代码在我的机器上运行良好,但这并不能让我相信它是有效的。 最佳答案