-7
我是新的C++,任何人都可以解释的意思这个?:C++数组运算符[]不允许?
敌不过 '操作[]'(操作数类型是 '的std :: initializer_list' 和 'INT')
在这个程序:
#include <algorithm>
#include <array>
#include <iostream>
using namespace std;
void
print_array(const auto& range)
{
cout << endl;
for (auto& element : range)
cout << element << ' ';
cout << endl;
}
void
sort(auto& range)
{
for (int i = 0; i < range.size() - 1; i++) {
swap(range[i], min_element(range[i + 1], range[range.size() - 1]));
}
}
int
main()
{
auto arr = { 1, 4, 2, 0, 9, 11 };
print_array(arr);
sort(arr);
print_array(arr);
return 0;
}
编译:
g++ main.cpp -Ofast -std=gnu++17
main.cpp: In instantiation of ‘void sort(auto:2&) [with auto:2 = std::initializer_list<int>]’:
main.cpp:30:11: required from here
main.cpp:20:15: error: no match for ‘operator[]’ (operand types are ‘std::initializer_list<int>’ and ‘int’)
swap(range[i], min_element(range[i + 1], range[range.size() - 1]));
~~~~~^
main.cpp:20:37: error: no match for ‘operator[]’ (operand types are ‘std::initializer_list<int>’ and ‘int’)
swap(range[i], min_element(range[i + 1], range[range.size() - 1]));
~~~~~^
main.cpp:20:51: error: no match for ‘operator[]’ (operand types are ‘std::initializer_list<int>’ and ‘std::initializer_list<int>::size_type {aka long unsigned int}’)
swap(range[i], min_element(range[i + 1], range[range.size() - 1]));
因为我说我是C++新手,解释/演示'std :: initializer_list如何工作或给出相关链接或演示如何在这种情况下正确访问范围[索引]将比获取触发和downvoting更有帮助。
谢谢您的阅读。
的操作数'的std :: initializer_list'和'int',而不是一个数组,'int'尝试看看它 –
作为一个侧面说明,你不能在参数声明中使用'auto'符像那样。首先阅读[这些C++书籍](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)之一。 – Ron
可能的重复[有没有办法将自动作为参数传递给C++?](https://stackoverflow.com/questions/29944985/is-there-a-way-to-pass-auto-as-an-参数-在-c)的 – user4581301