【发布时间】:2013-07-22 23:37:34
【问题描述】:
在此回复中:
https://stackoverflow.com/a/14382318/1676605
这个程序给出:
std::vector<int> vi{ 0, 2, 4 };
std::vector<std::string> vs{ "1", "3", "5", "7" };
for (auto i : redi::zip(vi, vs))
std::cout << i.get<0>() << ' ' << i.get<1>() << ' ';
我不知道auto i 的类型是什么,这使得重用专业知识和从示例中学习变得更加困难。以下是将auto i 更改为char i 的结果
In function ‘int main()’:|
/data/cbworkspace/TestZip/TestZip.cpp|14|error: cannot convert ‘boost::iterator_facade<boost::zip_iterator<boost::tuples::tuple<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, __gnu_cxx::__normal_iterator<int*, std::vector<int> > > >, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, boost::random_access_traversal_tag, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, long int>::reference {aka boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >}’ to ‘char’ in initialization|
/data/cbworkspace/TestZip/TestZip.cpp|14|warning: unused variable ‘i’ [-Wunused-variable]|
||=== Build finished: 1 errors, 1 warnings (0 minutes, 0 seconds) ===|
尝试从中找出类型。
有没有办法找出 C++11 中 auto 的变量是什么类型?更清楚地说,我有一个这样的struct:
struct EventData
{
// return value from redi::zip<std::vector<PriceQuote>, std::vector<PriceQuote>> what goes here????? So REDI::Zip is zipping PriceQuote, PriceQuote of bids and asks.
};
struct PriceQuote
{
double price;
double size;
};
【问题讨论】:
-
检查
redi::zip返回的参考。 -
(A) 使用 IDE,(B) 如果您对使用它的类型不够了解,请不要使用
auto -
如果你不介意在运行时得到答案,你总是可以做类似
std::cout << typeid(i).name() << std::endl; -
你是对的,但至少我可以看出它是某种迭代器
-
不管是什么类型,重要的是怎么用。