草庐IT

vector_tostr

全部标签

c++ - 错误 : invalid initialization of non-const reference of type ‘bool&’ from an rvalue of type ‘std::vector<bool>::reference {aka std::_Bit_reference}’

为什么我会收到错误:从类型为“std::vector::reference{akastd::_Bit_reference}”的右值对类型为“bool&”的非常量引用进行无效初始化?vector>vis;bool&visited(intx,inty){returnvis[x][y];//error}据我所知,vector中的operator[]返回引用,所以它应该是一个左值,但它不起作用。我应该怎么做才能让它发挥作用? 最佳答案 那是因为std::vector不是它看起来的样子。std::vector有一个特化与类型bool-它是空间

c++ - 默认情况下,std::vector 是线程安全和并发的吗?为什么或者为什么不?

使动态数组线程安全和并发意味着什么?例如,std::vector。两个线程可能想插入到同一个位置。不需要同步,因为它将根据线程调度完成。一个线程删除而另一个线程访问同一个元素?我认为这不是数据结构问题,而是使用问题。那么,是否需要对std::vector做些什么来使其线程安全和并发,或者默认情况下它是线程安全和并发的? 最佳答案 C++11标准库中关于容器线程安全的规定如下:23.2.2Containerdataraces[container.requirements.dataraces]Forpurposesofavoidingd

c++ - 错误 C2039 : 'vector' : is not a member of 'std'

我是C++的新手,我正在尝试制作一款地牢爬虫小游戏。目前我在我的头文件中声明了多个vector,但它们似乎给出了多个错误。我曾尝试在StackOverflow上搜索此问题,但答案似乎并不奏效。这是我的头文件之一:(Hero.h)#pragmaonceclassHero{public:Hero();std::stringname;intexperience;intneededExperience;inthealth;intstrength;intlevel;intspeed;std::vectoritems=std::vector();voidlevelUp();private:};这是

c++ - 将 std::vector<boost::optional<double>> 转换为 std::vector<double>

我有一个std::vector>,foo说。在这个特定的例子中,我需要一个std::vector其他vector中的任何“可选”元素映射到新vector中的0。我是否缺少针对此问题的单线解决方案?另一种选择是不尽如人意std::vectorout(foo.size());for(auto&it:foo){out.push_back(it?*it:0.0);}我欢迎基于std::optional的解决方案,即使我还没有使用该标准。 最佳答案 std::transform解决方案:std::vectorout(foo.size());s

c++ - 将临时对象移动到 vector 中

#include#include#includeinti=0;structA{A():j(++i){std::coutvec;voidfoo(vec&v){v.push_back(std::move(A()));}intmain(){vecv;foo(v);foo(v);}上面的例子产生下一个输出:constructor1move1destructor1constructor2move2move1destructor1destructor2destructor1destructor2问题:为什么执行了第一个析构函数(但没有为第二个对象执行)?为什么第二个对象的移动在第一个对象的移动之前

c++ - 为什么双端队列使用的 RAM 比 C++ 中的 vector 多得多?

我遇到了一个问题,我正在处理需要使用某种二维数组的地方。该数组的宽度是固定的(四列),但我需要即时创建额外的行。为此,我一直在使用vector的vector,并且一直在使用一些包含以下内容的嵌套循环:array.push_back(vector(4));array[n][0]=a;array[n][1]=b;array[n][2]=c;array[n][3]=d;n++添加行及其内容。问题是我试图创建的元素数量似乎用完了内存,所以我减少了我使用的数量。但后来我开始阅读双端队列,并认为它可以让我使用更多的内存,因为它不必是连续的。我在这个循环中将所有提及的“vector”更改为“dequ

c++ - 更好地将: reserve vector capacity,预分配为大小或循环回退是什么?

我有一个函数,将指向char数组和段大小的指针作为输入参数,并调用另一个需要std::array的函数。这个想法是将输入char数组“分割”成相等的部分,并形成字符串数组。输入的char数组格式是确定大小的几个较小的数组(或字符串),它们串联在一起。尽管它们可能是零,但并不假定它们为零终止。段大小5和元素数量10的示例:chark[]="1234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\000";charm[]="1234\00067890987654321\000234567809

C++,根据另一个 vector 对一个 vector 进行排序

这个问题在这里已经有了答案:HowcanIsorttwovectorsinthesameway,withcriteriathatusesonlyoneofthevectors?(9个回答)关闭9个月前。我得到的最好的例子是我想根据分数对名称进行排序。vectorNames{"Karl","Martin","Paul","Jennie"};vectorScore{45,5,14,24};因此,如果我将分数排序为{5,14,24,45},那么名字也应该根据他们的分数排序。

c++ - 我什么时候应该使用 vector<int>::size_type 而不是 size_t?

在thisquestion我看到以下内容:for(vector::size_typeix=0;ix!=ivec.size();++ix){ivec[ix]=0;}我明白为什么int这里没有使用,但为什么不直接使用size_t?什么情况下应该用vector::size_type而不是size_t? 最佳答案 初级使用时间size_type在模板中。虽然std::vector::size_type通常是size_t,some_other_container::size_type可能是其他类型1。允许用户添加到std的少数内容之一命名空间

独立 std::threads 的 C++ std::vector

我正在构建一个实时软件,其中我在main()上有一个主无限循环和用于读取和处理数据的线程。其中一个问题是保持运行线程的std::vector向它们发送信号并监视执行。所以我把这段代码放在一起:#include#include#include#include#includenamespacereaderThread{voidstart(intid){while(1){std::coutreaderThreads;for(int&reader:readers){std::threadth(readerThread::start,reader);readerThreads.push_back