草庐IT

STD_LOGIC_VECTOR

全部标签

c++ - std::containers 的日志分配器?

X:我需要知道程序的每个部分使用了多少内存。我的程序经常使用C++std库。特别是,我想知道每个对象使用了多少内存。我是怎么做的:要记录some_vector的消耗,只需写my::vectorsome_vector;在哪里namespacemy{templateusingvector=std::vector>;}登录分配器实现如下:templatestructLoggingAllocator{//...boilerplate...pointerallocate(size_typen,std::allocator::const_pointerhint=0){log_allocation(

c++ - 多个 std::atomic<T> 条件

在我的多线程应用程序中,我有一个可以简化为这个例子的条件std::atomica,b;//...if(a.load()&&b.load()){//...}显然,在条件之后,a和b可以持有不同的值。在我的应用程序中,它认为,如果两个值同时为真,它们就不能再改变状态。但是在a.load()返回true之后,它可能甚至在b.load()被评估之前改变它的值。是否有一个优雅的解决方案来原子地评估这个声明?显然,锁定a.store(..)和b.store(..)的每次调用都可以在这里工作,但这远非好事。 最佳答案 您是否考虑过使用atomic

c++ - cuda 上的 vector 步长加法较慢

我正在尝试在CUDAC++代码上运行vector步长加法函数,但对于大小为5,000,000的大型float组,它的运行速度也比我的CPU版本慢。以下是我正在谈论的相关CUDA和cpu代码:#defineTHREADS_PER_BLOCK1024typedeffloatreal;__global__voidvectorStepAddKernel2(real*x,real*y,real*z,realalpha,realbeta,intsize,intxstep,intystep,intzstep){inti=blockDim.x*blockIdx.x+threadIdx.x;if(i>>

c++ - vector < vector < int >> 在第一个维度上的点积

我有vector>data_mat(3,vector(4));vectordata_vec(3);哪里data_mat可以被认为是一个矩阵和data_vec作为列vector,我正在寻找一种方法来计算data_mat的每一列的内积与data_vec,并将其存储在另一个vectordata_out(4)中.例子http://liveworkspace.org/code/2bW3X5%241使用for_each和transform,可用于计算矩阵的列和:sum=vector(data_mat[0].size());for_each(data_mat.begin(),data_mat.end

c++ - std::list 的新位置

我正在寻求实现一个(双向)链表,它仅在内部调用placementnew,将所有内存定向到分配有类似内容的池:char*memPool=newchar[4096];//One-offnormal'new'最初我打算实现我自己的类,它接受一个指向(类管理)预分配内存池的指针。但是,我想首先确定我无法使用std::list获得相同的结果。特别是,thethirdsectionofDavidRodríguez'sanswertothisSOquestion让我担心。std::list必须在其组件节点上调用new和delete是有道理的,但我想修改它行为,以便将所有节点分配到我的自定义池中。因此

c++ - 使用 std::initializer_list 创建树?

我有这样的东西:structExprTreeNode{charc;std::vectori;};ExprTreeNodetn{'+',{1,2,3,4}};我想写的是这样的:MyTreet1{'+',{1,2,{'*',{3,4,5}}}};MyTreet2{'*',{{'+',{77,88,99,111}},{'-',{44,33}}}};我可以自由定义MyTree类(和可能的辅助类)——但它应该是树状的——比如作为TreeNode内容的运算符和包含子节点的容器(例如std::vector)。在C++中是否可以使用这样的initializer_list来初始化树状结构?(如果可能的话

c++ - constexpr 数组和 std::initializer_list

我正在尝试编写一个可以像这样使用的编译时valarray:constexprarraya={1.0,2.1,3.2,4.3,5.4,6.5};static_assert(a[0]==1.0,"");static_assert(a[3]==4.3,"");static_assert(a.size()==6,"");我设法通过以下实现实现了它并且工作正常(使用GCC4.7):#includetemplatestructarray{private:conststd::size_t_size;constT*_data;public:constexprarray(std::initializer

c++ - 如果我想要最大速度,我应该只在 std::vector 上使用数组吗?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter为指导。8年前关闭。我正在编写一些需要尽可能快的代码,而不会占用我所有的研究时间(换句话说,没有手动优化的程序集)。我的系统主要由一堆3D点(原子系统)组成,因此我编写的代码进行了大量距离比较、最近邻搜索以及其他类型的排序和比较。这些是大型的、百万或十亿点系统,并且简单的O(n^2)嵌套for循环不会削减它。对我来说最简单的方法是使用std::vector保持点坐标。起初我认为

c++ - 将 vector 更改为数组会使我的程序变慢

我分析了我的一个程序,发现热点是levenshtein_distance,递归调用。我决定尝试优化它。lvh_distancelevenshtein_distance(conststd::string&s1,conststd::string&s2){constsize_tlen1=s1.size(),len2=s2.size();std::vectorcol(len2+1),prevCol(len2+1);constsize_tprevColSize=prevCol.size();for(unsignedinti=0;i(s1i!=s2[j])));}col.swap(prevCol)

c++ - Win32 CMutex 与标准库 std::mutex 的比较

自从引入threadC++11中的库,我一直在检查我的代码并进行一些更改,以将其从特定于平台的多线程代码转移到可移植的标准库代码。但是,我很好奇标准库之间是否存在性能或功能差异std::mutex和std::lock_guard和Win32特定的CMutex和CSingleLock.我没有分析多线程代码的经验,而且我不知道这两个互斥锁类中任何一个的内部结构,所以我什至无法冒险猜测。 最佳答案 功能性尊重是肯定的--CMutexstd::mutex直接映射到Win32互斥类型更基本,可能使用win32CRITICAL_SECTION实