错误抛出未知原因
#include "std_lib_facilities.h"
int main()
{
vector<char> shape = ('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');
return(0);
}
带有向量的一行抛出了我以前从未见过的错误,也无法弄明白......
:: g ++ TicTacToe.cpp -o TTT
TicTacToe.cpp:在函数int main()':
char'中向非标量类型`Vector'请求
TicTacToe.cpp:5: error: conversion from
在每个tic-tac-toe框中看到它将以_开头然后转到X或O,我这样做没有图形库所以它的终端图形。
答案 0 :(得分:2)
如果所有值都相同,您可以使用std::vector
的以下构造函数:
std::vector<char> shape( 9, 'a' );
如果部分或全部值不同,您可以使用另一个构造函数,如下所示:
static const char ini[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' };
std::vector<char> shape( ini, ini+sizeof(ini) );
或者
static const char ini[] = "abcdefghi";
std::vector<char> shape( ini, ini+sizeof(ini)-1 );
答案 1 :(得分:1)
这种向量初始化在当前的C ++中是不可能的。您可以使用:
vector<char> shape(9, 'a');
将产生所需的效果(创建一个大小为9的向量,其中所有元素都设置为'_'
)。
如果boost是一个选项,Boost.Assign提供了您最初想要实现的语法,尽管在这种特殊情况下使用适当的std::vector
构造函数已足够了。
答案 2 :(得分:0)
vector没有这样的构造函数。查看有效的constructors。
答案 3 :(得分:0)
vector类具有以下构造函数:
explicit vector( size_type n, const T& value= T(), const Allocator&=Allocator());
使用你可以做的:
vector<char> shape (9,'a');