Tag: vector

从numpy数组中取出具有给定步幅/步长的子arrays

可以说我有一个Python Numpy数组数组a。 numpy.array([1,2,3,4,5,6,7,8,9,10,11].) 我想从这个长度为5的数组中创build一个子序列matrix,结果matrix因此将如下所示: numpy.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]]) 一种可能的实现方法是使用for循环。 result_matrix = np.zeros((3, 5)) for i in range(0, len(a), 3): result_matrix[i] = a[i:i+5] 有没有一个更清洁的方式来实现这个是Numpy?

如何打印出vector的内容?

我想用C ++打印一个vector的内容,这里是我的: #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); } for (x = 17; […]

什么是最有效的方法来删除重复和sorting向量?

我需要带有潜在的很多元素的C ++向量,擦除重复项,并对其进行分类。 我目前有下面的代码,但它不起作用。 vec.erase( std::unique(vec.begin(), vec.end()), vec.end()); std::sort(vec.begin(), vec.end()); 我怎样才能正确地做到这一点? 另外,首先删除重复项(类似于上面的代码)还是先执行sorting? 如果我首先执行sorting,它是否保证在执行std::unique之后保持sorting? 还是有另一种(也许更有效)的方式来做到这一点?

用硬编码元素初始化std :: vector最简单的方法是什么?

我可以创build一个数组,并像这样初始化它: int a[] = {10, 20, 30}; 如何创build一个std::vector并初始化它类似的优雅? 我知道的最好的方法是: std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30); 有没有更好的办法?

std ::向量元素是否保证是连续的?

我的问题很简单: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' } }

从vector中删除元素

我想使用擦除方法从vector中清除元素。 但是这里的问题是元素不能保证在向量中只出现一次。 它可能会出现多次,我需要清除所有这些。 我的代码是这样的: 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, 1); return […]

如果线程启动Executor,则无法从Future <?>和SwingWorker获取ArrayIndexOutOfBoundsException

我使用Executor来玩SwingWorker的multithreading,而且我从那里错误的发现了Vector中的错误元素,看起来像这段代码很可能忽略了Vector中不存在的元素 我的问题 – >如何/有可能以某种方式捕捉这个exception 简单的输出 run: Thread Status with Name :StartShedule, SwingWorker Status is STARTED Thread Status with Name :StartShedule, SwingWorker Status is DONE Thread Status with Name :StartShedule, SwingWorker Status is STARTED Thread Status with Name :StartShedule, SwingWorker Status is DONE Thread Status with Name :StartShedule, SwingWorker Status is STARTED Thread Status with Name […]

为什么Java Vector类被认为已经过时或被弃用?

为什么Java向量被认为是遗留类,已经过时或被弃用? 使用并发时,它的使用是否有效? 如果我不想手动同步对象,只想使用线程安全的集合,而不需要创build底层数组的新副本(就像CopyOnWriteArrayList那样),那么使用Vector吗? 怎么样Stack ,这是Vector一个子类,我应该用什么来代替它呢?

如何在矢量增长时执行移动语义?

我有一个特定的类A的对象的std ::向量。类是不平凡的,并有复制构造函数和移动构造函数定义。 std::vector<A> myvec; 如果我用A对象填充矢量(使用例如myvec.push_back(a) ),则使用复制构造函数A( const A&)来实例化矢量中的元素的新副本,矢量将变大。 我可以以某种方式强制A类的移动构造函数使用beging使用吗?