簡體   English   中英

在2D int向量上使用std :: fill

[英]using std::fill on a 2D int vector

我試圖將2D矢量中的所有元素的值設置為特定值。 據我所知,人們不能將memset用於矢量,例如它們如何用於數組。 因此,我必須使用std :: fill將2D向量中的所有元素設置為特定值。 但是,我知道如何使用填充1D向量,如下所示。

vector<int> linearVector (1000,0);
fill(linearVector.begin(),linearVector.end(),10);

但是,當我嘗試為2D矢量做類似的事情時(如下所示),它不起作用。

vector<vector<int> > twoDVector (100,vector <int> (100,0));
fill(twoDVector.begin(),twoDVector.end(),10);

PS:我知道我可以輕松設計一個嵌套的for循環來手動將2D矢量的元素設置為我想要的值。 但是,在我的程序中這是不可行的,因為2D向量的大小非常大並且還有其他耗時的函數(遞歸函數)並行發生。

這應該對你有幫助

std::vector<std::vector<int> > fog(
A_NUMBER,
std::vector<int>(OTHER_NUMBER)); // Defaults to zero initial value

參考: 初始化二維std :: vector

你可以像這樣使用:

fill(twoDVector.begin(), twoDVector.end(), vector<int>(100, 10));

在C ++ 17中,您可以執行以下操作:

#include <algorithm>
#include <execution>
#include <vector>

//...    

std::for_each(std::execution::par_unseq, nums.begin(), nums.end(),
    [](std::vector<int>& vec) {
    std::for_each(std::execution::par_unseq, vec.begin(), vec.end(),
    [](int& n) {n = 10;});}
);

它似乎是平行的,但不如簡單的填充功能那么清晰;)

當然,您可以傳遞自己的變量而不是硬編碼10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM