草庐IT

STD_LOGIC_VECTOR

全部标签

c++ - 如何最好地快速填充 vector ?

我有一些正在处理的模拟代码,就优化而言,我刚刚摆脱了所有唾手可得的成果。现在,代码将一半时间用于推回vector。(最终vector的大小是已知的,我适当保留)本质上,我是将一个vector重新排列成另一个vector的排列,或者用随机元素填充vector。有没有更快的推回vector的方法?还是推回/复制多个元素?std::vector>::push_back(unsignedintconst&)提前致谢。编辑:额外信息;我正在使用-O3运行发布版本,另外:需要保留原始vector。 最佳答案 你可以看看c++0x(这在theco

c++ - Visual C++ parallel_for + vector 访问冲突

我正在尝试将循环通过~12,000x12,000单元格矩阵(大约125次)的过程转换为使用并行处理(通过parallel_for)。我正在使用的代码如下。你可以看到for循环被注释掉的地方。当我用for循环运行这段代码时,没有任何问题。当我使用parallel_for运行它(调试)时,它在随机点崩溃,出现“FratarProcess.exe0xC0000005中0x00f3d4ae处的未处理异常:访问冲突写入位置0x0000000。备注:accessMatrix声明为vector>accessMatrix;并在此之前填充。voiddumpMatrix(unsignedshortm){i

c++ - solaris (x86) 上std::basic_string 的一些疑惑

solaris(x86)上std::basic_string的一些困惑#include#includeintmain(){constwchar_t*s=L"abcdef";std::wstringws(s,s+6);for(inti=0;i运行结果为:9799101000为什么不是979899100101102代码#include#includeintmain(){constwchar_t*s=L"abcdef";std::wstringws;ws.resize(6);for(inti=0;i可以得到预期的结果。我使用gcc3.4.6,构建命令是g++-fshort-wcharstri

c++ - 将大量数字 vector 保存到硬盘驱动器

我使用unsignedshort类型的vector在RAM中分配了一大块连续字节。vectortestDump(204800000);for(intk=0;k现在我想将这个vector保存到我的硬盘驱动器中。如何以及最快的方法是什么?数据量相当大(~1/2GB)。我尝试了以下方法:ofstreamoutfile("allMyNumbers.txt",ios::out|ios::binary);outfile.write(&testDump[0],testDump.size());但我收到以下错误:cannotconvertparameter1from'unsignedshort*'to

c++ - 指针的返回 vector ——理解

我试图理解以下内容(假设MyStorageClass很大):classMyStorageClass{public:stringx;stringy;stringz;};classstorage{public:storage();~storage(){vector::iteratorit=myVec.begin();it!=myVec.end();it++){delete*it;}vectorgetItems(){for(inti=0;iv;};main(){storages;vectorvm=s.getItems();}根据我的理解,当s返回vector并分配给vm时,这是作为一个拷贝(

c++ - std::bad_alloc 之后 std::vector 的状态

我试图找到一个在线引用来查看几个标准容器的异常安全性。在std::vector的情况下,它是否保持push_back调用之前的状态?我假设vector的所有对象仍然有效(没有调用析构函数)。在push_back抛出std::bad_alloc异常后,提供什么保证std::vector? 最佳答案 如果它抛出,vector不会改变。甚至不是capacity()。根据[container.requirements.general]:Unlessotherwisespecified(see23.2.4.1,23.2.5.1,23.3.3.

c++ - 如何通过迭代器将 map<string, int> push_back 到 vector<map<string, int>> 中?

我目前正在学习AcceleratedC++(Koening/Moo)这本书,但我在其中一个练习中遇到了问题。任务是编写一个程序,将一些单词序列作为输入,然后将其存储在map中。.字符串是输入的单词和关联的int是每个单词出现的次数。然后,您必须根据单词出现的次数对单词进行排序;也就是说,按值而不是键。您不能按值对映射进行排序,因此我尝试将元素复制到vector中,我打算使用谓词对其进行排序。不幸的是,我得到的只是一个充满g++错误的屏幕。它们似乎源于同一个地方-将我的map的元素放入我的vector中,我尝试这样做:intmain(){mapcounters;cout>word)++c

c++ - 如何创建一个隐藏多层 vector 并将其公开为单个范围的 Boost.Range?

我有一个无法修改的遗留类层次结构。由于外部库的要求,我需要为Line和Ring定义Boost.Ranges,其中两者都只在一次运行中公开点(即对于Line和Ring,它应该是一个Boost.RangeofPoints).伪代码来说明:Linel1=Line{{1.0,2.0},{3.0,4.0},{5.0,6.0}}//initLinewiththreePointsLinel2=Line{{7.0,8.0},{9.0,10.0},{11.0,12.0}}//initLinewiththreePointsautolit=boost::begin(l1);//pointstothePoin

c++ - std::call_once 和内存重新排序

给定来自here的代码:classlazy_init{mutablestd::once_flagflag;mutablestd::unique_ptrdata;voiddo_init()const{data.reset(newexpensive_data);}public:expensive_dataconst&get_data()const{std::call_once(flag,&lazy_init::do_init,this);return*data;}};我在其他地方也看到了相同模式的一些变体。所以我的问题是:为什么这段代码被认为是保存的?以及为什么编译器不能在调用std::c

c++ - std::unique_ptr<T> 不完整类型错误

我有templateclassqueue{private:structnode{Tdata;std::unique_ptrnext;//compileerroronincompletetypenode(T&&data_):data(std::move(data_)){}};std::unique_ptrhead;node*tail;public:queue():tail(nullptr){}我在VS10的标记行上遇到编译错误。在这种情况下,我是否应该被允许使用不完整的类型(实例化模板-构造函数-这里以int为例)?有解决方法吗?编辑singlethreadedqueue.h(62):e