我有矢量列表:
list< vector<int> > myList;
该列表的结构:
({1,2,3}, {4,5,6}, ...)
我想从他的职位上获得一定的帮助。例如,getFromList(myList, 0, 2)
将返回3
。我试过了,但是不起作用:
int getFromList(list< vector<int> > myList, int i, int j)
{
int ki = 0, kj = 0, num;
for (list<vector<int>>::iterator it1 = myList.begin(); it1 != myList.end(); ++it1) {
vector<int>::iterator it2;
ki++;
for (it2 = (*it1).begin(); it2 != (*it1).end(); ++it2) {
kj++;
if (ki == i && kj == j) {
num = (*it2);
}
}
}
return num;
}
这是一个示范节目
#include <iostream>
#include <list>
#include <vector>
#include <iterator>
#include <stdexcept>
int getFromList( const std::list<std::vector<int>> &myList, size_t i, size_t j )
{
if ( !( i < myList.size() ) ) throw std::out_of_range( "The frst index is out of the range" );
auto it = std::next( myList.begin(), i );
if ( !( j < it->size() ) ) throw std::out_of_range( "The second index is out of the range" );
return it->operator []( j );
}
int main()
{
std::list<std::vector<int>> myList = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11, 12 } };
std::cout << "myList[" << 2 << "][" << 3 << "] = " << getFromList( myList, 2, 3 ) << std::endl;
return 0;
}
它的输出是
myList[2][3] = 11
请注意,该函数的第一个参数是const reference。
对于您的函数,当索引之一超出有效范围时,它具有未定义的行为,因为该函数返回变量的未初始化值num
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句