grazie mille, allora il codice completo è questo:

codice:
#pragma once
#include <map>
#include <vector>
#include <string>


using namespace std;


struct lz78 {
private:
	/* massimo numero di elementi memorizzabili nel dizionario */
	size_t _max_dict;
	size_t _max_bits;
	size_t _num_dict;
	/* definisce il look-ahead dell'algoritmo */
	vector <pair<size_t, uint8_t>> _tuple;
	vector <uint8_t> _buffer;
	/* dizionario */
	map <string, size_t> _dict;


public:
	lz78(size_t max_bits, ifstream & is) :
		_max_bits(max_bits){


		_num_dict = 0;
		_max_dict = 1 << max_bits;


		cout << "max_bits: " << _max_bits << endl;
		cout << "max_dict: " << _max_dict << endl;


		uint8_t buff;
		while (is.read(reinterpret_cast<char *>(&buff), 1)) {
			_buffer.push_back(buff);
		}
	}


	void encode() {




		string enc;
		string enc_save;




		while (_buffer.size()) {




			enc = _buffer.front();
			_buffer.erase(_buffer.begin());




			if (_dict.find(enc) == _dict.end()) {
				while (true) {
					enc_save = enc;
					enc += _buffer.front();
					break;
				}
			}
		}
	}
};
codice:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstdint>


#include "lz78.h"


using namespace std;




int main(int argc, char **argv) {


	ifstream is(argv[2], ios::binary);
	ofstream os(argv[3], ios::binary);


	lz78 lz78_enc = lz78(atoi(argv[1]), is);


	lz78_enc.encode();


	is.close();
	os.close();


	system("pause");


	return EXIT_SUCCESS;
}
mentre come compilatore utilizzo quello di visual studio