草庐IT

vector_tostr

全部标签

c++ - 使用线程对 vector 进行排序

C++STL中定义的vector是可重入的还是线程安全的?我可以在不使用互斥锁的情况下使用两个线程并在vector的两半上工作(在本例中为排序)吗?例如:intsize=(Data_List.size())/2;ThreadA(){................//DoweneedtolockData_listwithamutexsort(Data_List.begin(),Data_List.begin()+size,cmp);}ThreadB(){....//DoweneedtolockData_listwithamutexsort(Data_List.begin()+(size

时间:2018-03-08 标签:c++opengl: how to find normalized vectors for a quad?

谁能帮我找到正确的四元归一化公式?将c++与opengl结合使用。谢谢! 最佳答案 Newell方法通常是计算接近平面的多边形法线的最佳选择。它往往对轻微的违规行为相当稳健,而不会太昂贵。查看GraphicsGemsarticle.它类似于上面描述的:Vector3dnormal(0,0,0);for(inti=0;i如果四边形表现得相当好,它可能不会有太大影响,但如果您要处理更复杂的多边形,我肯定会使用它。 关于时间:2018-03-08标签:c++opengl:howtofindno

c++ - vector的容量什么时候会减少?

(这个问题与shr​​ink_to_fit技巧无关(在C++11中使用swap()或shr​​ink_to_fit())。)如果我仅通过insert()、erase()、push_back()、pop_back(),clear(),容量不够时会增加,对vector重新分配。但是在什么情况下容量会减少呢?产能减少是否一定会导致重新分配? 最佳答案 标准保证没有引用/迭代器会在例如期间失效。弹回。来自[container.requirements.general]:Unlessotherwisespecified(eitherexpli

c++ - 如何使用 vector 和对象构造函数初始化对象 vector ?

如何初始化std::vector来自现有的std::vector哪些是要打开的文件的名称?没有vector的初始化,我可以用std::vectorinput_file_names;//Populatethevectorwithnamesoffilesthatneedstoopen.//...std::vectorinput_files_;for(autoconst&input_file_name:input_file_names){input_files_.emplace_back(input_file_name);} 最佳答案 在

c++ - Vector 无法正确创建对象

我创建了一个包含一些静态数据的类。像这样:classObject{public:Object();Object(Pointcenter,doublearea);Object(intcx,intcy,doublearea);~Object();//andotherpublicstuffshere...private:Pointcenter;doublearea;staticdoubletotalArea;staticintobjCounter;staticdoubleareaMean;};比起我做的构造函数和析构函数:Object::Object(){this->setCenter(Po

C++ - 已排序 std::vector 中元素的索引

我有一个我知道已排序的std::vector。使用std::binary_search我可以在日志时间内找到一个元素是否在vector中。不幸的是,如果成功,std::binary_search不会返回vector中元素的索引(或者如果成功了,我不知道如何访问它)。std::find会给我一个元素的迭代器,但它没有使用vector已排序的事实,因此它以线性时间而不是对数时间运行。我知道我可以轻而易举地实现我自己的二进制搜索算法,但我想知道在标准中是否有一种方法可以做到这一点。 最佳答案 您可以使用std::lower_bound(O

c++ - 如何检查 std::vector 超出范围的访问

[在这里找到了一个拷贝:C++-detectout-of-rangeaccess]如果我有一个“超出范围的vector访问”的程序,像这样:std::vectorA(2);...A[10]=3;我有办法找到这个错误吗?我的意思是类似于在Debug模式下编译并查看某些断言是否会停止执行。到目前为止,我已经自己检查过了。但也许我不必编写额外的代码?附言我当然检查了断言。它不叫。有了这个程序:#includeintmain(){std::vectorA(2);A[10]=3;return0;}编译者g++1.cpp-O0;./a.out所以看起来std在代码中没有断言,我禁不住想知道为什么他

C++ -- STL Vector::const_iterator 为什么不使用 < xx.end()?

//displayvectorelementsusingconst_iteratorfor(constIterator=integers.begin();constIterator!=integers.end();++constIterator)cout我们可以使用constIterator吗??谢谢 最佳答案 operator仅为randomaccessiterators定义。例如,这些由std::vector提供。和std::string,本质上是将数据存储在连续存储中的容器,其中迭代器通常只不过是包装指针。提供的迭代器,例如s

c++ - 带有 vector 的新运算符

这些问题相对简单。使用vector时,是否应该在推回新元素时使用new运算符?我应该调用哪种释放方法?这就是我的意思://Releasemethod:1.voidReleaseMethodOne(vector&ThisVector){//Clearoutthevector.ThisVector.clear();return;}//Releasemethod:2.voidReleaseMethodTwo(vector&ThisVector){//Clearoutthevector.for(unsigneduIndex(0);uIndexVector;//Addanewelement.Ve

c++ - 搜索和排序 vector 的最快方法

我正在做一个项目,我需要将数据插入vector中,对其进行排序和搜索......我需要尽可能快的排序和搜索算法...我一直在搜索并发现std::sort基本上是快速排序,它是最快的排序之一,但我无法弄清楚哪种搜索算法是最好的?二进制搜索??你能帮我吗?tnx...所以我有3种方法:voidaddToVector(Objo){fvector.push_back(o);}voidsortVector(){sort(fvector.begin(),fvector().end());}Obj*search(string&bla){//iwouldwritebinarysearchhereret