草庐IT

vector_tostr

全部标签

c++ - 可以使用 vector.back() 为 vector 的最后一个元素赋值吗?

作为特殊情况,我有一些代码需要分配vector的第一个和最后一个元素。somevector.back()是左值吗?下面的代码可以工作吗?some_vector.front()=first_value;some_vector.back()=last_value; 最佳答案 是的,它可以,因为它返回对最后一个元素的引用。最好先确保它不是空的! 关于c++-可以使用vector.back()为vector的最后一个元素赋值吗?,我们在StackOverflow上找到一个类似的问题:

c++ - vector 与双端队列运算符[]

如果我们不断地在容器的前面和后面添加,则应选择双端队列而不是vector。但是抵消呢?vector和deque的operator[]是否相同?如果不是,哪个更快? 最佳答案 Astd::vector是T的平面数组元素。std::deque是由T等大小的数组组成的数组.索引访问的复杂度在这两种情况下都是O(1),但std::deque需要做更多的工作来确定要访问的元素,并且还有一个指示。就像std::deque上的迭代器一样需要进行多次检查(尽管算法可以通过识别分段结构来优化这一点,从而使开销相当小。因此,如果您需要经常使用下标运算符

c++ - 将 vector<int> 转换为定界字符串

如我所见here在C#中,有一种将vector转换为以字符分隔的字符串的快速简便方法:varresult=string.Join(";",data);varresult=string.Join(";",data.Select(x=>x.ToString()).ToArray());我想知道在C++中是否有相同的方法来做到这一点? 最佳答案 #include#include#include#include#includeintmain(){std::vectordata={42,1,2,3,4,5};std::ostringstrea

c++ - 我可以禁用 std::vector 的复制构造函数吗?

我正在编写包含大量STLvector的代码。我想我已经将它构造成所有引用和移动构造函数,但我想要一种自动化的方式来确定。每当调用复制构造函数时,有什么方法可以得到警告或错误吗?我不想编写自己的vector类,也不想修改STLheader。请不要将编写自己类(class)的人提出的类似问题标记为重复项:我不想那样做。 最佳答案 除了禁用vector中存储的类型的复制构造函数和复制赋值运算符之外,不修改vector源代码,您将无法禁用vector复制。但是,您确实有几个选择。您可以检查您的二进制文件中是否存在vector复制构造函数;如

C++ 使用 toString() 方法有什么问题

我刚刚遇到thisquestion这是关于如何能够通过std::cout据我了解,实现此目的的标准方法是重载ostreams备选方案(也作为上述问题的答案给出)是覆盖字符串转换运算符。然而,这伴随着导致“意外转换和难以追踪的错误”的警告。现在我想知道编写一个toString()方法然后通过它使用它是否有任何缺点std::cout 最佳答案 输出流处理输出格式和输出。所以你的toString()方法客户端将无法像管理其他所有内容一样管理对象的格式://setspecificformattingoptionsforprintingava

c++ - 与最大大小相关的数组和 vector 之间的区别?

当我在我的Devcpp编译器中运行这段代码时->#includeusingnamespacestd;intmain(){vectorvec;for(inti=0;i它甚至可以在运行时运行。但是当我运行时->#includeusingnamespacestd;intarr[1000000000];intmain(){return0;}它给我链接错误。只要需要空间,arr和vec都需要相同的空间。那么为什么vec代码在运行时运行得很好,但arr代码甚至无法编译。 最佳答案 问题在于分配。在第一种情况下,std::vector默认allo

c++ - 为什么他用 "typedef vector<double>::size_type"而不是用 "int"

我刚刚学习C++,并且正在使用AcceleratedC++。在一个vector例子中,作者使用了如下代码;typedefvector::size_typevec_sz;vec_szsize=homework.size;我知道typedefvector::size_typevec_sz;这样他就不必将下一个命令写成vector::size_typesize=homework.size;,但我的问题是他为什么不直接声明size改为整数?intsize=homework.size;这是因为我们使用了vector吗?如果是这样,是否意味着vector迭代器返回的值不能存储在常规变量中?

c++ - 在 C++ 中将具有 unique_ptr 的对象插入 vector

我有一个简单的类结构来模拟离散模拟,它有一个状态vector,每个状态包含许多转换,作为智能指针vector保存。我使用智能指针来保存转换,因为在我的完整应用程序中我需要多态性。#include#includeclassTransition{public:Transition(){}};classState{public:State(intnum):num(num),transitions(){}voidadd_transition(std::unique_ptrtrans){transitions.push_back(std::move(trans));}private:intnum

c++ - 范围的范围到 vector 的 vector

假设我有一个名为rng的T范围。我能行autogroups=ranges::view::group_by(rng,bin_op);组现在是一系列T的范围。这个我也可以autogroups=ranges::view::group_by(rng,bin_op)|ranges::to_vector;获取T范围的vector。然而这autogroups=ranges::view::group_by(rng,bin_op)|ranges::to_vector|ranges::action::transform([](autor){returnr|ranges::to_vector;};还有aut

c++ - 检查 std::vector 是否有重复项

我想检查一个整数vector是否有任何重复项,如果有则必须返回true。所以我尝试做这样的事情:vectoruGuess={1,2,3,3,4,5}vectora=uGuess;sort(a.begin(),a.end());boold=unique(a.begin(),a.end());这将不起作用,因为unqiue不能分配为bool值。我应该如何着手呢?如果我要编写一个for循环来执行相同的操作,我应该怎么做? 最佳答案 您要查找的算法是std::adjacent_find.//Thecontainermustbesorted!