Questions tagged «stdvector»

序列类型定义为标准库的一部分。


18
如何打印出向量的内容?
我想在C ++中打印出向量的内容,这是我所拥有的: #include <iostream> #include <fstream> #include <string> #include <cmath> #include <vector> #include <sstream> #include <cstdio> using namespace std; int main() { ifstream file("maze.txt"); if (file) { vector<char> vec(istreambuf_iterator<char>(file), (istreambuf_iterator<char>())); vector<char> path; int x = 17; char entrance = vec.at(16); char firstsquare = vec.at(x); if (entrance == 'S') { path.push_back(entrance); …
281 c++  vector  output  stdvector  cout 




6
C ++,将副本设置为vector
我需要复制std::set到std::vector: std::set <double> input; input.insert(5); input.insert(6); std::vector <double> output; std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable 问题出在哪里?
146 c++  copy  stdvector  stdset 

7
如何根据对的第二个元素对向量进行排序?
如果我有一对向量: std::vector<std::pair<int, int> > vec; 有没有一种简单的方法可以基于该对的第二个元素按升序对列表进行排序? 我知道我可以编写一个可以完成工作的小函数对象,但是有没有办法使用STL的现有部分并std::less直接进行工作呢? 编辑:我了解我可以编写一个单独的函数或类以传递给第三个参数进行排序。问题是我是否可以用标准的东西建造它。我真的看起来像这样: std::sort(vec.begin(), vec.end(), std::something_magic<int, int, std::less>());
133 c++  stl  stdvector 

8
在C ++中返回std :: vector的有效方法
在函数中返回std :: vector时,要复制多少数据,以及将std :: vector放入免费存储(在堆中)并返回指针的优化有多大,即: std::vector *f() { std::vector *result = new std::vector(); /* Insert elements into result */ return result; } 比: std::vector f() { std::vector result; /* Insert elements into result */ return result; } ?

6
如何随机播放std :: vector?
我正在寻找一种通用的,可重用的方法来std::vector在C ++中进行洗牌。这是我目前的操作方式,但是我认为它不是很有效,因为它需要一个中间数组,并且需要知道项目类型(在此示例中为DeckCard): srand(time(NULL)); cards_.clear(); while (temp.size() > 0) { int idx = rand() % temp.size(); DeckCard* card = temp[idx]; cards_.push_back(card); temp.erase(temp.begin() + idx); }
97 c++  shuffle  stdvector 

8
vector :: at与vector :: operator []
我知道这at()比[]它的边界检查要慢,因为边界检查也有类似的问题,例如C ++ Vector at / []运算符速度 或:: std :: vector :: at()vs :: [] <<令人惊讶的结果!慢/快5到10倍!。我只是不明白该at()方法有什么用。 如果我有一个像这样的简单向量:std::vector<int> v(10);并且我决定通过使用at()而不是[]在有索引的情况下使用in 来访问其元素,i并且不确定其是否在向量范围内,它将迫使我用try-catch包装它块: try { v.at(i) = 2; } catch (std::out_of_range& oor) { ... } 尽管我可以自己使用size()和检查索引来获得相同的行为,但对我来说似乎更容易也很方便: if (i < v.size()) v[i] = 2; 所以我的问题是:与vector :: operator [] 相比,使用vector :: at有什么优点? 什么时候应该使用vector :: at而不是vector :: size …
95 c++  stl  stdvector 

4
Java使用数组的速度是C ++中std :: vector的8倍。我做错什么了?
我有以下带有几个大数组的Java代码,这些数组永远不会改变其大小。它在我的计算机上运行1100毫秒。 我在C ++中实现了相同的代码并使用了std::vector。 在我的计算机上,运行完全相同的代码的C ++实现的时间为8800 ms。我做错了什么,所以运行缓慢? 基本上,代码执行以下操作: for (int i = 0; i < numberOfCells; ++i) { h[i] = h[i] + 1; floodedCells[i] = !floodedCells[i]; floodedCellsTimeInterval[i] = !floodedCellsTimeInterval[i]; qInflow[i] = qInflow[i] + 1; } 它遍历大小约为20000的不同数组。 您可以在以下链接下找到这两种实现: Java:https://ideone.com/R8KqjT C ++:https://ideone.com/Lu7RpE (由于时间限制,在ideone上,我只能运行400次而不是2000次循环。但是即使在这里,相差三倍)

2
std :: dynarray与std :: vector
C ++ 14提出了std::dynarray: std :: dynarray是一个序列容器,该容器封装大小固定在构造上的数组,并且在对象的整个生命周期中都不会改变。 std::dynarray必须与一样在运行时分配std::vector。 那么,std::dynarray可以使用的std::vector动态性更好(同时又可调整大小)的好处和用法是什么?
84 c++  stdvector 


10
使用std :: vector作为原始内存的视图
我正在使用一个外部库,该库有时会给我一个指向整数和大小数组的原始指针。 现在,我想std::vector用来访问和修改这些值,而不是使用原始指针访问它们。 这是一个解释这一点的人工示例: size_t size = 0; int * data = get_data_from_library(size); // raw data from library {5,3,2,1,4}, size gets filled in std::vector<int> v = ????; // pseudo vector to be used to access the raw data std::sort(v.begin(), v.end()); // sort raw data in place for (int i = 0; …
71 c++  c++11  vector  stdvector 


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.