본문 바로가기
SWE/C++ OOP

C++ 랜덤 문자로 array 채우기 | std::generate

by S나라라2 2022. 10. 28.
반응형

 

  • C언어에서 랜덤 문자로 array 채우는 방법

for문 사용해서 일일이 채워준다.

char buf[100] = {0, };
for (int i=0; i<100; ++i) {
    buf[i] = std::rand()%256;
}

 

참고로 std::rand() 사용하려면 include <random> 이 필요하다. 

그리고 seed를 지정해줘야 한다.

srand(static_Cast<unsigned>(time(nullptr)));

 

 

  • C++에서 랜럼 문자로 array 채우는 방법

std::generate를 사용하면 간편하게 가능하다.

#include <iostream>
#include <algorithm>  // generate
#include <array>
#include <random>

using namespace std;

int main()
{
    std::array<char, 20> buff;
    
    srand(static_cast<unsigned>(time(nullptr)));
    std::generate(buff.begin(), buff.end(), []{ return (std::rand()%256); });

    // Print elements of the buff
    for (int i=0; i<20; ++i) {
        std::cout << buff[i] << " ";
    }
    
    return 0;
}

std::generate() 코드를 살펴보자면, buff.begin() 부터 buff.end()를 세 번째 인자로 채워준다.

간편하다.

 

  • 실행 결과

 

 

  • std::generate() 내부 로직

함수 내부 로직을 보면 사실 우리가 C언어로 작성한 것과 동일하다.

그러나 좋은 점은 세 번째 인자로 람다식을 사용할 수 있어서 간편하고 다양한 활용이 가능하다.

 

 

 

반응형