Consider the following code snippet,
#include <iostream>
#include <valarray>
using namespace std;
std::ostream & operator<<(std::ostream & out, const std::valarray<int> inputVector);
typedef std::valarray<std::valarray<int> > val2d;
int main()
{
val2d g(std::valarray<int>(10),4);
for (uint32_t n=0; n<4; ++n){
for (uint32_t m=0; m<10; ++m){
g[n][m] = n*10 + m;
}
}
std::valarray<int> g_slice_rs = g[1][std::slice(0,10,1)]; // row slice
//std::valarray<int> g_slice_cs = g[std::slice(0,1,3)][0]; // column slice (comment out)
cout<<"row slice :: "<<g_slice_rs<<endl;
//cout<<"column slice :: "<<g_slice_cs<<endl; // (comment out)
return 0;
}
std::ostream & operator<<(std::ostream & out, const std::valarray<int> inputVector)
{
uint32_t vecLength = inputVector.size();
out<<"[";
for (uint32_t i=0; i<vecLength; ++i)
{
out <<inputVector[i]<<", ";
}
out<<"]"<<endl;
return out;
}
Here I'm able to access the row slices, but not the column slices(as indicated in comments). Is there any workaround to access column slices? This thread does not provide the answer.