草庐IT

EidosValue_Int_vector

全部标签

c++ - 从点 vector 中找到最近的点

我有指向一个非常简单的Point类的指针vector:classPoint{public:floatx;floaty;floatz;};如何使用STL找到最接近引用点的对象?我需要先对vector进行排序还是有更有效的方法? 最佳答案 排序需要O(n*log(N)),所以效率不是很高。您可以在O(n)中完成通过遍历元素并记住最佳匹配。使用for_each来自,您可以定义一个函数来跟踪最近的元素并在O(n)中完成.或者,您甚至可以使用min_element,也来自. 关于c++-从点vec

c++ - 在 C++ 中创建 boost dynamic_bitset 的 vector

我想创建一个动态位集数组。所以我创建了一个dynamic_bitsetvector,vector>v;如何指定每个动态位集的大小,即v[0]、v[1]等?与一般情况一样,我们通过构造函数指定大小。boost::dynamic_bitsetx(3); 最佳答案 这一行vector>v;创建一个空vector。相反,您可以要求它填充所有具有相同值的默认条目,所以就像通常那样vectorv(N,1);用N创建一个vector条目所有1你可以做vector>v(N,boost::dynamic_bitset(3));让它包含Nboost::

c++ - 将无效的 int 值转换为枚举

说我有enumFoo{Foo0,Foo1,Foo2};请注意,没有明确声明的Foo常量具有值3(它们是0、1和2)。以下是否会调用未定义的行为?Fooyay=(Foo)3;请特别注意3可能适合Foo的内部表示。 最佳答案 定义明确。为了表示值0、1和2,类型Foo必须至少有两个位,这也足以表示3。 关于c++-将无效的int值转换为枚举,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

c++ - 用迭代器计算矩阵 vector<vector<double>> 的列和?

在之前的帖子中columnvectorwithrowmeans--withstd::accumulate?我问是否有可能使用STL功能来计算矩阵的行均值vector>data(rows,vector(columns));@benjaminlindley的最佳答案不仅是我一直在寻找的,而且是一件美丽的事情。永远充满希望我认为计算列均值会很容易,所以STL等价于vectorcolmeans(data[0].size());for(inti=0;i在每个vector中不计算平均值,但跨所有vector中的相同索引:colmeans[0]==(data[0][0]+data[1][0]+...

c++ - 如何使用 lower_bound 将值插入排序 vector

我有一个指向类A的指针vector,我想使用STL按int键对其进行排序。为此,我定义了一个operator在A类booloperator在我的插入函数中它看起来像vector::iteratorit=lower_bound(vec.begin(),vec.end(),element);vec.insert(it,element);我希望lower_bound返回可以放置新元素的第一个位置,但它不起作用。插入具有键0、1、2、3的A对象将导致vector顺序不正确(2、3、1、0)。这是为什么?也许我也可以为这个对象使用比较器:comparefunctionforupper_bound

C++ std::vector<bool> 使用 drmemory 给出未初始化的读取错误

我在我的项目中使用了STL容器,我发现了一个我无法解释的奇怪错误。让我们考虑以下代码:#include#includeintmain(intargc,char**argv){std::vectorvec;vec.resize(5,false);std::cout这按预期输出0,但如果我使用drmemory运行内存检查,它会发现未初始化的读取。有人可以帮助理解这种行为吗?平台:win32;编译器:mingw32-gcc4.7.2;Drmemory1.6.0-构建2 最佳答案 std::vector是一个奇怪的小东西,使用位来实现它的目

c++ - 在C++中将json值转换为int

我正在使用C++读取json值Json::Readerreader并且值存储在Json::Valueroot此根包含“age”和“id”,我想将root["age"]转换为int。我尝试使用.str()将其转换为字符串,但无法获取。有什么建议吗? 最佳答案 在jsoncpp中,它们在Json::Value对象上提供辅助方法。您只需对该值调用asInt()方法即可对其进行转换。intageAsInt=root["age"].asInt() 关于c++-在C++中将json值转换为int,我

c++ - make_signed<unsigned long>::type 是 int?

我使用的是VisualStudio2010,下面的代码让我有些困惑:#includeautox=std::make_signed::type();x将是int类型,但我预计会很长。我知道VS10中的int和long都是4字节整数。但是即使一个signedlong装进一个int,int对我来说也不是unsignedlong对应的signedinteger类型。所以我的问题是:这是错误/技术错误还是标准规范允许这种结果? 最佳答案 C++1120.9.7.3[meta.trans.sign]描述了make_signed:IfTnames

c++ - 为什么 std::vector::insert 复杂度是线性的(而不是恒定的)?

假设我在std::vector中的第'i'个位置插入p个新元素|大小为“n”。自std::vector中的项目保证为其元素使用连续的存储位置,这似乎需要我执行上述4个步骤:1)如果空间不足,可能会重新分配vector,基本上是将其大小加倍。但这是一个恒定时间操作(尽管非常大)。2)接下来是从索引0到i-1的元素从旧vector到新vector的memcpy。3)然后你复制'p'个新项目被插入到第i个索引处。4)然后是从旧vector到新vector的从i+1到n索引的所有项目的另一个memcpy。以上不都是常数时间操作吗?那么插入本身不应该是一个恒定时间的操作吗?为什么是std::ve

c++ - std::vector::erase() 是否在删除点使迭代器无效?

C++03标准§23.2.4.3/3描述了std::vector::erase(iteratorposition)并具体说明了Invalidatesalltheiteratorsandreferencesafterthepointoftheerase.在删除点的迭代器是否失效?具体来说,如果我有一个包含单个元素的vector,我将begin()迭代器复制到局部变量中,然后调用vec.erase(vec.begin())我在局部变量中的迭代器是否会失效?迭代器是在删除点之后还是在删除点之后失效? 最佳答案 我想说的是,您删除vecto