Questions tagged «vector»

向量是一维数组:它包含可以使用整数索引访问的组件。在某些语言中,矢量的大小可以根据需要增大或缩小,以适应创建矢量后添加和删除项目的需要。使用“矢量图形”进行图形显示。

6
将数据框的一行转换为矢量
我想从数据帧的一行中创建一个向量。但是我不需要行名和列名。我尝试了几件事...但是没有运气。 这是我的数据框: > df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3)) > df a b c 1 1 2 2.6 2 2 6 8.2 3 4 2 7.5 4 2 1 3.0 我试过了: > newV <- as.vector(df[1,]) > newV a b c 1 1 2 2.6 但是我真的想要这样的东西: > newV <- c( 1,2,2.6) > newV [1] …
116 r  vector  dataframe 

8
初始化二维std :: vector
因此,我有以下内容: std::vector< std::vector <int> > fog; 我非常天真地初始化它,例如: for(int i=0; i<A_NUMBER; i++) { std::vector <int> fogRow; for(int j=0; j<OTHER_NUMBER; j++) { fogRow.push_back( 0 ); } fog.push_back(fogRow); } 感觉很不对劲...还有另一种初始化向量的方法吗?
116 c++  vector 

3
数组与向量:介绍性的相似之处和不同之处
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 C ++中的数组和向量之间有什么区别?差异的一个例子可能包括库,符号,能力等。 数组 数组包含特定数量的特定类型的元素。为了使编译器可以在编译程序时保留所需的空间量,必须指定定义数组时数组将包含的元素类型和数量。编译程序时,编译器必须能够确定该值。定义数组后,可以将数组的标识符与索引一起使用,以访问数组的特定元素。数组是零索引的;也就是说,第一个元素在索引0处。此索引方案指示C ++中指针与数组之间的紧密关系以及该语言为指针算术定义的规则。 — C ++ Pocket参考 向量 向量是动态大小的对象序列,提供了数组样式的operator[]随机访问。成员函数push_back通过copy构造函数复制其参数,将该副本添加为向量中的最后一项,并将其大小增加1。pop_back通过删除最后一个元素实现完全相反的操作。从向量末尾插入或删除项目需要摊销固定时间,而从任何其他位置插入或删除项目则需要线性时间。这些是向量的基础。他们还有很多。在大多数情况下,向量应是C样式数组的首选。首先,它们是动态调整大小的,这意味着它们可以根据需要增长。您不必为了C数组的情况而进行各种研究来找出最佳的静态大小。向量会根据需要增长,并且可以根据需要手动调整其大小。其次,向量使用at成员函数提供边界检查(但不能使用operator[]),这样您就可以在引用不存在的索引时做些事情,而不是仅仅看着程序崩溃或更糟,而是继续执行损坏的数据。 — C ++食谱
111 c++  arrays  vector 

7
是否保证std :: vector元素是连续的?
我的问题很简单:std :: vector元素是否保证是连续的?顺便说一句,我可以使用指向std :: vector第一个元素的指针作为C数组吗? 如果我的记忆很好,那么C ++标准将无法保证。但是,由于std :: vector要求如此,如果元素不连续,则几乎不可能满足它们。 有人可以澄清吗? 例: std::vector<int> values; // ... fill up values if( !values.empty() ) { int *array = &values[0]; for( int i = 0; i < values.size(); ++i ) { int v = array[i]; // do something with 'v' } }
111 c++  vector  standards 

6
为什么可以从函数中返回“向量”?
请考虑此代码。我已经看过几次这种类型的代码。words是局部向量。如何从函数返回它? 我们可以保证它不会死吗? std::vector<std::string> read_file(const std::string& path) { std::ifstream file("E:\\names.txt"); if (!file.is_open()) { std::cerr << "Unable to open file" << "\n"; std::exit(-1); } std::vector<string> words;//this vector will be returned std::string token; while (std::getline(file, token, ',')) { words.push_back(token); } return words; }


5
如何使用迭代器在向量中导航?(C ++)
目标是访问字符串向量的“ nth”元素,而不是[]运算符或“ at”方法。据我了解,迭代器可用于在容器中导航,但我以前从未使用过迭代器,而我正在阅读的内容令人困惑。 如果有人能给我一些有关如何实现这一目标的信息,我将不胜感激。谢谢。
105 c++  iterator  vector 

6
如何从R中的向量列表制作矩阵?
目标:从长度相等的向量列表中,创建一个矩阵,其中每个向量变为一行。 例: > a <- list() > for (i in 1:10) a[[i]] <- c(i,1:5) > a [[1]] [1] 1 1 2 3 4 5 [[2]] [1] 2 1 2 3 4 5 [[3]] [1] 3 1 2 3 4 5 [[4]] [1] 4 1 2 3 4 5 [[5]] [1] …
102 r  matrix  vector 

10
测试单个向量的所有元素之间的相等性
我正在尝试测试向量的所有元素是否彼此相等。我想出的解决方案似乎有些round回,都涉及检查length()。 x <- c(1, 2, 3, 4, 5, 6, 1) # FALSE y <- rep(2, times = 7) # TRUE 与unique(): length(unique(x)) == 1 length(unique(y)) == 1 与rle(): length(rle(x)$values) == 1 length(rle(y)$values) == 1 一个可以让我包括用于评估要素之间“平等”的容差值的解决方案将是避免FAQ 7.31问题的理想选择。 我完全忽略了针对测试类型的内置函数吗?identical()并all.equal()比较两个R对象,因此它们在这里不起作用。 编辑1 以下是一些基准测试结果。使用代码: library(rbenchmark) John <- function() all( abs(x - mean(x)) < .Machine$double.eps ^ …
101 r  vector  equality 

5
从向量中删除元素
我想使用擦除方法从向量中清除元素。但是这里的问题是不能保证元素在向量中仅出现一次。它可能存在多次,我需要清除所有这些。我的代码是这样的: void erase(std::vector<int>& myNumbers_in, int number_in) { std::vector<int>::iterator iter = myNumbers_in.begin(); std::vector<int>::iterator endIter = myNumbers_in.end(); for(; iter != endIter; ++iter) { if(*iter == number_in) { myNumbers_in.erase(iter); } } } int main(int argc, char* argv[]) { std::vector<int> myNmbers; for(int i = 0; i < 2; ++i) { myNmbers.push_back(i); myNmbers.push_back(i); } erase(myNmbers, …
101 c++  vector  stl  erase 

6
为什么vector <bool>不是STL容器?
斯科特·迈耶斯(Scott Meyers)的书《有效的STL:提高标准模板库使用率的50种特定方法》第18条说,要避免vector &lt;bool&gt;使用它,因为它不是STL容器,并且实际上并不适用bool。 如下代码: vector &lt;bool&gt; v; bool *pb =&amp;v[0]; 不会编译,这违反了STL容器的要求。 错误: cannot convert 'std::vector&lt;bool&gt;::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization vector&lt;T&gt;::operator []返回类型应该是T&amp;,但是为什么会有特殊情况vector&lt;bool&gt;呢? 什么是vector&lt;bool&gt;真正组成的呢? 该项目还说: deque&lt;bool&gt; v; // is a STL container and it really contains bools 可以代替vector&lt;bool&gt;吗? 谁能解释一下?

12
从向量中删除项目,而在C ++ 11范围“ for”循环中?
我有一个IInventory *的向量,并且正在使用C ++ 11范围遍历该列表,以便对每个对象进行处理。 在处理完一个东西之后,我可能想将其从列表中删除并删除该对象。我知道我可以随时调用delete指针进行清理,但是在范围for循环中将其从向量中删除的正确方法是什么?如果我从列表中删除它,我的循环是否将无效? std::vector&lt;IInventory*&gt; inv; inv.push_back(new Foo()); inv.push_back(new Bar()); for (IInventory* index : inv) { // Do some stuff // OK, I decided I need to remove this object from 'inv'... }
97 c++  vector  for-loop  c++11 


8
为什么矢量可绘制比例没有按预期缩放?
我正在尝试在Android应用程序中使用矢量可绘制对象。从http://developer.android.com/training/material/drawables.html(重点是我): 在Android 5.0(API级别21)及更高版本中,您可以定义矢量可绘制对象,这些对象可缩放而不会丢失定义。 使用此可绘制对象: &lt;vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"&gt; &lt;path android:fillColor="@color/colorPrimary" android:pathData="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /&gt; 这个ImageView: &lt;ImageView android:layout_width="400dp" android:layout_height="400dp" android:src="@drawable/icon_bell"/&gt; 尝试以400dp(在运行棒棒糖的大约2015年移动设备上较大的高分辨率)上显示图标时,产生此模糊图像: 将可绘制矢量的定义中的宽度和高度更改为200dp,可以显着改善400dp渲染大小时的情况。但是,将其设置为TextView元素的可绘制对象(即,文本左侧的图标)现在会创建一个巨大的图标。 我的问题: 1)为什么在矢量可绘制对象中有宽度/高度规范?我认为这些的全部目的是它们无损地进行缩放,从而使宽度和高度的定义毫无意义吗? 2)是否可以使用单个矢量可绘制对象,它在TextView上可作为24dp可绘制对象,但是可以很好地缩放以使用更大的图像?例如,如何避免创建多个不同大小的矢量可绘制对象,而是使用一个可按我的渲染要求缩放的矢量可绘制对象? 3)如何有效使用width / height属性,以及viewportWidth / Height有何区别? 额外细节: 设备正在运行API 22 将Android Studio …

12
从头到尾迭代C ++向量
是否可以从头到尾迭代向量? for (vector&lt;my_class&gt;::iterator i = my_vector.end(); i != my_vector.begin(); /* ?! */ ) { } 还是只有这样才能做到: for (int i = my_vector.size() - 1; i &gt;= 0; --i) { }
96 c++  vector  iterator 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.