error: ‘power’ was not declared in this scope

#include <numeric>#include <vector>#include <iterator>#include <iostream>using namespace std;int main(int argc, char **argv){int iArray[5] = {1, 2, 3, 4, 5};vector<int> iVect(iArray, iArray+5);cout << accumulate(iVect.begin(), iVect.end(), 0) << endl;cout << accumulate(iVect.begin(), iVect.end(), 0, minus<int>()) << endl;cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10) << endl;cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10, minus<int>(), plus<int>()) << endl;ostream_iterator<int> oIter(cout, " ");partial_sum(iVect.begin(), iVect.end(), oIter);cout << endl;partial_sum(iVect.begin(), iVect.end(), oIter, minus<int>());cout << endl;adjacent_difference(iVect.begin(), iVect.end(), oIter);//1 1 1 1 1(#1元素照录, #n新元素等于 #n 旧元素 – #n-1 旧元素 )cout << endl;adjacent_difference(iVect.begin(), iVect.end(), oIter, plus<int>());//1 3 5 7 9(#1元素照录, #n新元素等于 op(#n 旧元素, #n-1 旧元素) )cout << endl;cout << power(10, 3) << endl;///usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric中有cout << power(10, 3, plus<int>()) << endl;int n = 3;iota(iVect.begin(), iVect.end(), n);for(int i = 0; i < iVect.size(); i++) {cout << iVect[i] << " ";}cout << endl;}编译报错:

主要原因:

#include <ext/numeric>//For iota, already #include <numeric>#include <vector>#include <iterator>#include <iostream>using namespace std;using namespace __gnu_cxx;//For power iota特别注意:using namespace __gnu_cxx;不可少,因为头文件/usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric中有一句_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx),,需要使用__gnu_cxx命名空间。

正确代码:

//#include <ext/functional> // For identity_element#include <ext/numeric>//For iota, already #include <numeric>#include <vector>#include <iterator>#include <iostream>using namespace std;using namespace __gnu_cxx;//For power iotaint main(int argc, char **argv){int iArray[5] = {1, 2, 3, 4, 5};vector<int> iVect(iArray, iArray+5);cout << accumulate(iVect.begin(), iVect.end(), 0) << endl;cout << accumulate(iVect.begin(), iVect.end(), 0, minus<int>()) << endl;cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10) << endl;cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10, minus<int>(), plus<int>()) << endl;ostream_iterator<int> oIter(cout, " ");partial_sum(iVect.begin(), iVect.end(), oIter);cout << endl;partial_sum(iVect.begin(), iVect.end(), oIter, minus<int>());cout << endl;adjacent_difference(iVect.begin(), iVect.end(), oIter);//1 1 1 1 1(#1元素照录, #n新元素等于 #n 旧元素 – #n-1 旧元素 )cout << endl;adjacent_difference(iVect.begin(), iVect.end(), oIter, plus<int>());//1 3 5 7 9(#1元素照录, #n新元素等于 op(#n 旧元素, #n-1 旧元素) )cout << endl;cout << power(10, 3) << endl;///usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric中cout << power(10, 3, plus<int>()) << endl;int n = 3;iota(iVect.begin(), iVect.end(), n);for(int i = 0; i < iVect.size(); i++) {cout << iVect[i] << " ";}cout << endl;}

再次编译运行

没有什么可凭仗,只有他的好身体,没有地方可去,只想到处流浪。

error: ‘power’ was not declared in this scope

相关文章:

你感兴趣的文章:

标签云: