如何在C++中用一个字符填充数组
How to fill an array with one character in C++
而不是设置一个循环来遍历这个数组的每个位置,并将其设置为等于这个点
int arraySize=50;
char board[arraySize];
for(i=0; i<arraySize; i++)
board[i]='.';
有什么方法可以声明一个数组用这些"填充吗马上
例如char-board[arraySize]={'.};
您可以用以下方式构造向量,而不是数组:
vector<char> board(arraySize, '.');
矢量可以像数组一样使用:
char c = board[1];
据我所知,实现这一目标的唯一方法是实际执行您发布的char-board[arraySize]={'.','.',''.'…(50次)},但实际复制并粘贴它50次,这很麻烦,也不明智。所以for循环有效,或者使用向量!
该声明的问题在于,您在编译时使用仅在运行时已知的大小来分配内存。arraySize可能随时更改。例如,如果你说:
#define ARRAY_SIZE 50
char board[ARRAY_SIZE];
这样,在编译时就知道要分配的大小,编译器不会抱怨。然后您可以使用:memset(array, '.', size_of_array);
进行初始化
您在运行时使用new
分配的另一个选项,并像这样使用"值初始化":
char * board = new char[arraySize]();
这将在运行时为您分配和初始化数组。
请改用std::array,然后可以使用fill。
#include <array>
[..]
std::array<char, 50> board;
board.fill('.');
但请注意,这是C++11,在内部,数组上也有一个循环。你可以得到更少、更干净的代码,但速度并不快。
您可以选择使用std::vector
,并在正确的构造函数重载中指定初始"填充"值:
#include <vector> // For std::vector
....
std::vector<char> board(arraySize, '.');
如果你真的需要一个原始的C数组,你总是可以使用std::fill()
来简单地填充一些值:
#include <algorithm> // For std::fill
#include <iterator> // For non-member std::begin and std::end
....
static const int arraySize = 50;
char board[arraySize];
fill(begin(board), end(board), '.');
另一种选择是使用std::array
(它像原始C数组一样重量轻,零开销,但也提供C++STL接口):
#include <algorithm> // For std::fill
#include <array> // For std::array
....
static const int arraySize = 50;
std::array<char, arraySize> board;
std::fill(board.begin(), board.end(), '.');
// or just:
// board.fill('.');
// Since std::array has a fill() method.
(坦率地说,在C++中,我认为如果你真的需要使用静态大小的固定大小数组,std::array
比原始C数组更好。)
std::vector
是一种C++方法,用于处理运行时可以更改大小的数组:
std::vector<char> v( 50, '.'); // a vector with 50 dots
http://en.cppreference.com/w/cpp/container/vector
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用动态分配将 char* 复制到另一个字符**
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- C++:使用另一个字符将一个字符大写
- 我可以得到一个字符 * 到一个 std::sregex_iterator 匹配 str() 吗?
- 使用连续分隔符和空最后一个字符进行拆分
- 如何比较文件中包含的下一个字符
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 如何从文本文件中一次读取一个字符
- 将一个字符替换为字符串中更多数量的字符,而不删除C++中的其他字母
- 读取输入后,输出丢失了一个字符
- 比较最后一个字符,不区分大小写(带谓词?
- 如果一个字符,比如说"9",我减去"0",我在结果上使用 is 数字,我是真还是假
- 为什么 std::istream::gcount 返回的字符比预期的多一个字符
- 使用 fstream 在空格分隔文件中查看下一项(不仅仅是一个字符)的方法
- 使用 char 将一个字符数组分配给另一个字符数组时出现奇怪的行为
- 在弦乐器中删除最后一个字符